]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI: histb: Fix an error handling path in histb_pcie_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sat, 1 Mar 2025 18:42:54 +0000 (19:42 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:39:16 +0000 (14:39 +0200)
[ Upstream commit b36fb50701619efca5f5450b355d42575cf532ed ]

If an error occurs after a successful phy_init() call, then phy_exit()
should be called.

Add the missing call, as already done in the remove function.

Fixes: bbd11bddb398 ("PCI: hisi: Add HiSilicon STB SoC PCIe controller driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
[kwilczynski: remove unnecessary hipcie->phy NULL check from
histb_pcie_probe() and squash a patch that removes similar NULL
check for hipcie-phy from histb_pcie_remove() from
https://lore.kernel.org/linux-pci/c369b5d25e17a44984ae5a889ccc28a59a0737f7.1742058005.git.christophe.jaillet@wanadoo.fr]
Signed-off-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Link: https://lore.kernel.org/r/8301fc15cdea5d2dac21f57613e8e6922fb1ad95.1740854531.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pci/controller/dwc/pcie-histb.c

index 7a11c618b9d9c46a851ca71eb10a88681d9e0892..5538e5bf99fb6854440190f3baee0741e0028ad6 100644 (file)
@@ -409,16 +409,21 @@ static int histb_pcie_probe(struct platform_device *pdev)
        ret = histb_pcie_host_enable(pp);
        if (ret) {
                dev_err(dev, "failed to enable host\n");
-               return ret;
+               goto err_exit_phy;
        }
 
        ret = dw_pcie_host_init(pp);
        if (ret) {
                dev_err(dev, "failed to initialize host\n");
-               return ret;
+               goto err_exit_phy;
        }
 
        return 0;
+
+err_exit_phy:
+       phy_exit(hipcie->phy);
+
+       return ret;
 }
 
 static void histb_pcie_remove(struct platform_device *pdev)
@@ -427,8 +432,7 @@ static void histb_pcie_remove(struct platform_device *pdev)
 
        histb_pcie_host_disable(hipcie);
 
-       if (hipcie->phy)
-               phy_exit(hipcie->phy);
+       phy_exit(hipcie->phy);
 }
 
 static const struct of_device_id histb_pcie_of_match[] = {