]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: stm32-csi: Fix dereference before NULL check
authorChandra Mohan Sundar <chandramohan.explore@gmail.com>
Mon, 18 Aug 2025 09:31:57 +0000 (15:01 +0530)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 25 Aug 2025 13:40:44 +0000 (15:40 +0200)
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>
drivers/media/platform/st/stm32/stm32-csi.c

index b69048144cc12b90467a4807031314daf2cbefd0..fd2b6dfbd44c571154bf1df99be502c4a18cf99a 100644 (file)
@@ -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)