summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugues Fruchet <hugues.fruchet@st.com>2019-04-01 11:56:09 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-05-31 16:46:18 +0300
commit2096b3ba3274d28d9b26d817dc0fcbf5ea7c03a0 (patch)
tree92ef2f09ab5ba67d27a28cb1e55ef412313ffdff
parent6c21fa849a5abbceb6b7b6db053adfe5fb5193f5 (diff)
downloadlinux-2096b3ba3274d28d9b26d817dc0fcbf5ea7c03a0.tar.xz
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>
-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 100a5922d75f..d38682265892 100644
--- a/drivers/media/platform/stm32/stm32-dcmi.c
+++ b/drivers/media/platform/stm32/stm32-dcmi.c
@@ -808,6 +808,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;
}
@@ -986,6 +989,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;
}