On Tue Aug 4 23:11:04 2026 +0900, Myeonghun Pak wrote:
> Runtime PM is enabled before the IRQ is looked up.  If that lookup
> fails, probe returns without disabling runtime PM.  The subdevice
> initialization error path disables runtime PM but leaves autosuspend
> enabled, while the remove path does neither.
> 
> Use devm_pm_runtime_enable() so the driver core disables autosuspend and
> runtime PM on every failed probe and after remove.  This also makes the
> manual subdevice error unwind unnecessary.
> 
> This issue was identified during our ongoing static-analysis research while
> reviewing kernel code.
> 
> Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control block 
> driver")
> Cc: [email protected]
> Signed-off-by: Ijae Kim <[email protected]>
> Signed-off-by: Myeonghun Pak <[email protected]>
> Reviewed-by: Jacopo Mondi <[email protected]>
> Signed-off-by: Jacopo Mondi <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

---

diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c 
b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c
index 355842abb24b..48f9fd818bff 100644
--- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c
+++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c
@@ -202,7 +202,9 @@ static int rzv2h_ivc_probe(struct platform_device *pdev)
 
        pm_runtime_set_autosuspend_delay(dev, 2000);
        pm_runtime_use_autosuspend(dev);
-       pm_runtime_enable(dev);
+       ret = devm_pm_runtime_enable(dev);
+       if (ret)
+               return ret;
 
        ivc->irqnum = platform_get_irq(pdev, 0);
        if (ivc->irqnum < 0)
@@ -210,14 +212,9 @@ static int rzv2h_ivc_probe(struct platform_device *pdev)
 
        ret = rzv2h_ivc_initialise_subdevice(ivc);
        if (ret)
-               goto err_disable_pm_runtime;
+               return ret;
 
        return 0;
-
-err_disable_pm_runtime:
-       pm_runtime_disable(dev);
-
-       return ret;
 }
 
 static void rzv2h_ivc_remove(struct platform_device *pdev)
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to