| From 6016604eb9da743e5c8a2180aede648eda78eb86 Mon Sep 17 00:00:00 2001 |
| From: Hugues Fruchet <hugues.fruchet@st.com> |
| Date: Mon, 1 Apr 2019 04:56:09 -0400 |
| Subject: media: stm32-dcmi: fix crash when subdev do not expose any formats |
| |
| [ Upstream commit 33dfeb62e23c31619d2197850f7e8b50e8cc5466 ] |
| |
| Do not access sd_formats[] if num_of_sd_formats is zero, ie |
| subdev sensor didn't expose any formats. |
| |
| Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/platform/stm32/stm32-dcmi.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c |
| index a1f0801081ba9..922855b6025c7 100644 |
| --- a/drivers/media/platform/stm32/stm32-dcmi.c |
| +++ b/drivers/media/platform/stm32/stm32-dcmi.c |
| @@ -811,6 +811,9 @@ static int dcmi_try_fmt(struct stm32_dcmi *dcmi, struct v4l2_format *f, |
| |
| sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat); |
| if (!sd_fmt) { |
| + if (!dcmi->num_of_sd_formats) |
| + return -ENODATA; |
| + |
| sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1]; |
| pix->pixelformat = sd_fmt->fourcc; |
| } |
| @@ -989,6 +992,9 @@ static int dcmi_set_sensor_format(struct stm32_dcmi *dcmi, |
| |
| sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat); |
| if (!sd_fmt) { |
| + if (!dcmi->num_of_sd_formats) |
| + return -ENODATA; |
| + |
| sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1]; |
| pix->pixelformat = sd_fmt->fourcc; |
| } |
| -- |
| 2.20.1 |
| |