]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: imx-jpeg: Set video drvdata before register video device
authorMing Qian <ming.qian@nxp.com>
Fri, 13 Sep 2024 06:21:44 +0000 (15:21 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Dec 2024 18:50:32 +0000 (19:50 +0100)
commit d2b7ecc26bd5406d5ba927be1748aa99c568696c upstream.

The video drvdata should be set before the video device is registered,
otherwise video_drvdata() may return NULL in the open() file ops, and led
to oops.

Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder")
Cc: <stable@vger.kernel.org>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: TaoJiang <tao.jiang_2@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/imx-jpeg/mxc-jpeg.c

index e515325683a4774e75a075f34849b4c28db384fc..3f85c23d57b568fe7f6aff9f90c1d79cdc8641e9 100644 (file)
@@ -2155,6 +2155,7 @@ static int mxc_jpeg_probe(struct platform_device *pdev)
        jpeg->dec_vdev->vfl_dir = VFL_DIR_M2M;
        jpeg->dec_vdev->device_caps = V4L2_CAP_STREAMING |
                                        V4L2_CAP_VIDEO_M2M_MPLANE;
+       video_set_drvdata(jpeg->dec_vdev, jpeg);
        if (mode == MXC_JPEG_ENCODE) {
                v4l2_disable_ioctl(jpeg->dec_vdev, VIDIOC_DECODER_CMD);
                v4l2_disable_ioctl(jpeg->dec_vdev, VIDIOC_TRY_DECODER_CMD);
@@ -2167,7 +2168,6 @@ static int mxc_jpeg_probe(struct platform_device *pdev)
                dev_err(dev, "failed to register video device\n");
                goto err_vdev_register;
        }
-       video_set_drvdata(jpeg->dec_vdev, jpeg);
        if (mode == MXC_JPEG_ENCODE)
                v4l2_info(&jpeg->v4l2_dev,
                          "encoder device registered as /dev/video%d (%d,%d)\n",