]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: chipidea: fix usage_count leak when autosuspend_delay is negative
authorXu Yang <xu.yang_2@nxp.com>
Thu, 16 Jul 2026 10:41:26 +0000 (18:41 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Jul 2026 15:12:21 +0000 (17:12 +0200)
The probe() calls pm_runtime_use_autosuspend(), but remove() does not call
pm_runtime_dont_use_autosuspend(). This can lead to a usage_count leak if
autosuspend_delay is set to a negative value.

The pm_runtime_use_autosuspend() also notes that it's important to undo
this with pm_runtime_dont_use_autosuspend() at driver exit time.

Fixes: 1f874edcb731 ("usb: chipidea: add runtime power management support")
Cc: stable <stable@kernel.org>
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260716104126.2763454-1-xu.yang_2@oss.nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/chipidea/core.c

index 07563be0013f4d28ed6318a0751670ccef01d0a5..b53672f3ea6347e379ea199385f1b7f4214c08d3 100644 (file)
@@ -1250,6 +1250,7 @@ static void ci_hdrc_remove(struct platform_device *pdev)
                usb_role_switch_unregister(ci->role_switch);
 
        if (ci->supports_runtime_pm) {
+               pm_runtime_dont_use_autosuspend(&pdev->dev);
                pm_runtime_get_sync(&pdev->dev);
                pm_runtime_disable(&pdev->dev);
                pm_runtime_put_noidle(&pdev->dev);