usb: dwc3-am62: remove unnecesary clk_put()
authorYang Yingliang <yangyingliang@huawei.com>
Wed, 29 Jun 2022 09:46:35 +0000 (17:46 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jun 2022 19:04:55 +0000 (21:04 +0200)
The clk get by devm_clk_get() will be released in devres_release_all(),
so there is no need explicitly call clk_put(), or it will cause UAF.

Fixes: e8784c0aec03 ("drivers: usb: dwc3: Add AM62 USB wrapper driver")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20220629094635.3116961-1-yangyingliang@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/dwc3-am62.c

index fea7aca..173cf35 100644 (file)
@@ -195,8 +195,7 @@ static int dwc3_ti_probe(struct platform_device *pdev)
 
        if (i == ARRAY_SIZE(dwc3_ti_rate_table)) {
                dev_err(dev, "unsupported usb2_refclk rate: %lu KHz\n", rate);
-               ret = -EINVAL;
-               goto err_clk_disable;
+               return -EINVAL;
        }
 
        data->rate_code = i;
@@ -204,7 +203,7 @@ static int dwc3_ti_probe(struct platform_device *pdev)
        /* Read the syscon property and set the rate code */
        ret = phy_syscon_pll_refclk(data);
        if (ret)
-               goto err_clk_disable;
+               return ret;
 
        /* VBUS divider select */
        data->vbus_divider = device_property_read_bool(dev, "ti,vbus-divider");
@@ -245,8 +244,6 @@ err_pm_disable:
        clk_disable_unprepare(data->usb2_refclk);
        pm_runtime_disable(dev);
        pm_runtime_set_suspended(dev);
-err_clk_disable:
-       clk_put(data->usb2_refclk);
        return ret;
 }
 
@@ -276,7 +273,6 @@ static int dwc3_ti_remove(struct platform_device *pdev)
        pm_runtime_disable(dev);
        pm_runtime_set_suspended(dev);
 
-       clk_put(data->usb2_refclk);
        platform_set_drvdata(pdev, NULL);
        return 0;
 }