aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/stm32/stm32-dcmi.c
diff options
context:
space:
mode:
authorHugues Fruchet <hugues.fruchet@st.com>2019-04-01 04:56:09 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-04-22 11:09:23 -0400
commit33dfeb62e23c31619d2197850f7e8b50e8cc5466 (patch)
tree1a90a32c2f7523fdca38f2b817d56eba18300413 /drivers/media/platform/stm32/stm32-dcmi.c
parent1be0a2b702308f16fc1c1a58ada5aba13afc123e (diff)
media: stm32-dcmi: fix crash when subdev do not expose any formats
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>
Diffstat (limited to 'drivers/media/platform/stm32/stm32-dcmi.c')
-rw-r--r--drivers/media/platform/stm32/stm32-dcmi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c
index b63d57cd89e5..906e71b19039 100644
--- a/drivers/media/platform/stm32/stm32-dcmi.c
+++ b/drivers/media/platform/stm32/stm32-dcmi.c
@@ -831,6 +831,9 @@ static int dcmi_try_fmt(struct stm32_dcmi *dcmi, struct v4l2_format *f,
831 831
832 sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat); 832 sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat);
833 if (!sd_fmt) { 833 if (!sd_fmt) {
834 if (!dcmi->num_of_sd_formats)
835 return -ENODATA;
836
834 sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1]; 837 sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1];
835 pix->pixelformat = sd_fmt->fourcc; 838 pix->pixelformat = sd_fmt->fourcc;
836 } 839 }
@@ -1009,6 +1012,9 @@ static int dcmi_set_sensor_format(struct stm32_dcmi *dcmi,
1009 1012
1010 sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat); 1013 sd_fmt = find_format_by_fourcc(dcmi, pix->pixelformat);
1011 if (!sd_fmt) { 1014 if (!sd_fmt) {
1015 if (!dcmi->num_of_sd_formats)
1016 return -ENODATA;
1017
1012 sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1]; 1018 sd_fmt = dcmi->sd_formats[dcmi->num_of_sd_formats - 1];
1013 pix->pixelformat = sd_fmt->fourcc; 1019 pix->pixelformat = sd_fmt->fourcc;
1014 } 1020 }