]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: imx-jpeg: Use devm_pm_runtime_enable() helper
authorMing Qian <ming.qian@oss.nxp.com>
Tue, 3 Feb 2026 08:23:39 +0000 (16:23 +0800)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 23 Mar 2026 10:18:33 +0000 (11:18 +0100)
Use devm_pm_runtime_enable() to simplify probe and exit paths.

No functional change.

Signed-off-by: Ming Qian <ming.qian@oss.nxp.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c

index 7dc975792dedec610c4659e071ac92be59eb9310..417d8fa5621e868a355a3df2fb4af0f893f8ac4c 100644 (file)
@@ -2971,12 +2971,22 @@ static int mxc_jpeg_probe(struct platform_device *pdev)
                          jpeg->dec_vdev->minor);
 
        platform_set_drvdata(pdev, jpeg);
-       pm_runtime_enable(dev);
+       ret = devm_pm_runtime_enable(dev);
+       if (ret) {
+               dev_err(dev, "Failed to enable runtime PM: %d\n", ret);
+               goto err_pm;
+       }
 
        return 0;
 
+err_pm:
+       video_unregister_device(jpeg->dec_vdev);
+       /* set NULL to prevent double-free */
+       jpeg->dec_vdev = NULL;
 err_vdev_register:
-       video_device_release(jpeg->dec_vdev);
+       /* Only release if allocation succeeded but registration failed */
+       if (jpeg->dec_vdev)
+               video_device_release(jpeg->dec_vdev);
 
 err_vdev_alloc:
        v4l2_m2m_release(jpeg->m2m_dev);
@@ -3047,7 +3057,6 @@ static void mxc_jpeg_remove(struct platform_device *pdev)
 
        mxc_jpeg_free_slot_data(jpeg);
 
-       pm_runtime_disable(&pdev->dev);
        video_unregister_device(jpeg->dec_vdev);
        v4l2_m2m_release(jpeg->m2m_dev);
        v4l2_device_unregister(&jpeg->v4l2_dev);