aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2026-10-21 13:20:30 -0500
committerBjorn Helgaas <bhelgaas@google.com>2026-10-21 13:20:30 -0500
commitd2ac9aa59774f7dc80b85b03c2ff0a19acbdff05 (patch)
tree061ad5f1f73a8e3d2e52ad72f4f668e0565dc8ff /drivers
parentcc854bb2be750b14d9dbd04603514a3cec17eeef (diff)
parenta54ac2eb6eca8baa86b89494b8a0d9439a0f72ee (diff)
Merge branch 'pci/controller/aspeed'
- Fix clk and PHY leaks in aspeed_pcie_port_init() error paths (Liu Zhenlong) * pci/controller/aspeed: PCI: aspeed: Fix clk and PHY leak in aspeed_pcie_port_init() error paths
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/controller/pcie-aspeed.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pci/controller/pcie-aspeed.c b/drivers/pci/controller/pcie-aspeed.c
index 74b03a55643f..ecb7562f84c0 100644
--- a/drivers/pci/controller/pcie-aspeed.c
+++ b/drivers/pci/controller/pcie-aspeed.c
@@ -761,16 +761,21 @@ static int aspeed_pcie_port_init(struct aspeed_pcie_port *port)
port->slot);
ret = phy_init(port->phy);
- if (ret)
+ if (ret) {
+ clk_disable_unprepare(port->clk);
return dev_err_probe(dev, ret,
"failed to init phy pcie for slot (%d)\n",
port->slot);
+ }
ret = phy_set_mode_ext(port->phy, PHY_MODE_PCIE, PHY_MODE_PCIE_RC);
- if (ret)
+ if (ret) {
+ phy_exit(port->phy);
+ clk_disable_unprepare(port->clk);
return dev_err_probe(dev, ret,
"failed to set phy mode for slot (%d)\n",
port->slot);
+ }
reset_control_deassert(port->perst);
msleep(PCIE_RESET_CONFIG_WAIT_MS);