summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandra Mohan Sundar <chandramohan.explore@gmail.com>2025-08-18 15:01:57 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-10-06 11:20:06 +0200
commit4eeafff163e80d576c5efc1360ae310c0ceedd02 (patch)
tree40746b7160cc6b416a6bcec04adcbee3050bc727
parentec2f87ad035e8d1ad67567542842f1f23a4dbde2 (diff)
downloadlinux-4eeafff163e80d576c5efc1360ae310c0ceedd02.tar.gz
linux-4eeafff163e80d576c5efc1360ae310c0ceedd02.tar.bz2
linux-4eeafff163e80d576c5efc1360ae310c0ceedd02.zip
media: stm32-csi: Fix dereference before NULL check
commit 80eaf32672871bd2623ce6ba13ffc1f018756580 upstream. In 'stm32_csi_start', 'csidev->s_subdev' is dereferenced directly while assigning a value to the 'src_pad'. However the same value is being checked against NULL at a later point of time indicating that there are chances that the value can be NULL. Move the dereference after the NULL check. Fixes: e7bad98c205d1 ("media: v4l: Convert the users of v4l2_get_link_freq to call it on a pad") Cc: stable@vger.kernel.org Signed-off-by: Chandra Mohan Sundar <chandramohan.explore@gmail.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/media/platform/st/stm32/stm32-csi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/media/platform/st/stm32/stm32-csi.c b/drivers/media/platform/st/stm32/stm32-csi.c
index b69048144cc1..fd2b6dfbd44c 100644
--- a/drivers/media/platform/st/stm32/stm32-csi.c
+++ b/drivers/media/platform/st/stm32/stm32-csi.c
@@ -443,8 +443,7 @@ static void stm32_csi_phy_reg_write(struct stm32_csi_dev *csidev,
static int stm32_csi_start(struct stm32_csi_dev *csidev,
struct v4l2_subdev_state *state)
{
- struct media_pad *src_pad =
- &csidev->s_subdev->entity.pads[csidev->s_subdev_pad_nb];
+ struct media_pad *src_pad;
const struct stm32_csi_mbps_phy_reg *phy_regs = NULL;
struct v4l2_mbus_framefmt *sink_fmt;
const struct stm32_csi_fmts *fmt;
@@ -466,6 +465,7 @@ static int stm32_csi_start(struct stm32_csi_dev *csidev,
if (!csidev->s_subdev)
return -EIO;
+ src_pad = &csidev->s_subdev->entity.pads[csidev->s_subdev_pad_nb];
link_freq = v4l2_get_link_freq(src_pad,
fmt->bpp, 2 * csidev->num_lanes);
if (link_freq < 0)