media: stm32-dcmi: fix crash when subdev do not expose any formats
authorHugues Fruchet <hugues.fruchet@st.com>
Mon, 1 Apr 2019 08:56:09 +0000 (04:56 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 22 Apr 2019 15:09:23 +0000 (11:09 -0400)
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>
drivers/media/platform/stm32/stm32-dcmi.c

index b63d57cd89e513bf4f58348a3d9364d31568ebee..906e71b190396098ca1bec68b17917640b33af66 100644 (file)
@@ -831,6 +831,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;
        }
@@ -1009,6 +1012,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;
        }