usb: xhci: tegra:Fix PM usage reference leak of tegra_xusb_unpowergate_partitions
authorzhangqilong <zhangqilong3@huawei.com>
Sat, 19 Mar 2022 02:38:22 +0000 (10:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Apr 2022 16:32:48 +0000 (18:32 +0200)
pm_runtime_get_sync will increment pm usage counter
even it failed. Forgetting to putting operation will
result in reference leak here. We fix it by replacing
it with pm_runtime_resume_and_get to keep usage counter
balanced.

Fixes: 41a7426d25fa ("usb: xhci: tegra: Unlink power domain devices")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Link: https://lore.kernel.org/r/20220319023822.145641-1-zhangqilong3@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-tegra.c

index c8af2cd2216d6012baa82cdcaa547851294c288c..996958a6565c3ade1ea02fed5f3dde94dc116a28 100644 (file)
@@ -1034,13 +1034,13 @@ static int tegra_xusb_unpowergate_partitions(struct tegra_xusb *tegra)
        int rc;
 
        if (tegra->use_genpd) {
-               rc = pm_runtime_get_sync(tegra->genpd_dev_ss);
+               rc = pm_runtime_resume_and_get(tegra->genpd_dev_ss);
                if (rc < 0) {
                        dev_err(dev, "failed to enable XUSB SS partition\n");
                        return rc;
                }
 
-               rc = pm_runtime_get_sync(tegra->genpd_dev_host);
+               rc = pm_runtime_resume_and_get(tegra->genpd_dev_host);
                if (rc < 0) {
                        dev_err(dev, "failed to enable XUSB Host partition\n");
                        pm_runtime_put_sync(tegra->genpd_dev_ss);