usb: host: xhci-tegra: add missing put_device() in tegra_xusb_probe()
authorYang Yingliang <yangyingliang@huawei.com>
Wed, 16 Jun 2021 04:45:17 +0000 (12:45 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jun 2021 13:26:40 +0000 (15:26 +0200)
Goto put_padctl to put refcount of device on error in tegra_xusb_probe()

Fixes: 971ee247060d ("usb: xhci: tegra: Enable ELPG for runtime/system PM")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210616044519.2183826-1-yangyingliang@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-tegra.c

index ce97ff054c68114ca4821e3b74c8c9f2cd6fa434..f30030a3e51bda04e5296b14aef22c3ee9e9077d 100644 (file)
@@ -1454,12 +1454,16 @@ static int tegra_xusb_probe(struct platform_device *pdev)
                return PTR_ERR(tegra->padctl);
 
        np = of_parse_phandle(pdev->dev.of_node, "nvidia,xusb-padctl", 0);
-       if (!np)
-               return -ENODEV;
+       if (!np) {
+               err = -ENODEV;
+               goto put_padctl;
+       }
 
        tegra->padctl_irq = of_irq_get(np, 0);
-       if (tegra->padctl_irq <= 0)
-               return (tegra->padctl_irq == 0) ? -ENODEV : tegra->padctl_irq;
+       if (tegra->padctl_irq <= 0) {
+               err = (tegra->padctl_irq == 0) ? -ENODEV : tegra->padctl_irq;
+               goto put_padctl;
+       }
 
        tegra->host_clk = devm_clk_get(&pdev->dev, "xusb_host");
        if (IS_ERR(tegra->host_clk)) {