[ 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.fruc...@st.com>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+sams...@kernel.org>
Signed-off-by: Sasha Levin <sas...@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 35ba6f211b790..4281f3f76ab15 100644
--- a/drivers/media/platform/stm32/stm32-dcmi.c
+++ b/drivers/media/platform/stm32/stm32-dcmi.c
@@ -775,6 +775,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;
        }
@@ -946,6 +949,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



Reply via email to