diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2026-10-21 13:20:30 -0500 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2026-10-21 13:20:30 -0500 |
| commit | d2ac9aa59774f7dc80b85b03c2ff0a19acbdff05 (patch) | |
| tree | 061ad5f1f73a8e3d2e52ad72f4f668e0565dc8ff /drivers | |
| parent | cc854bb2be750b14d9dbd04603514a3cec17eeef (diff) | |
| parent | a54ac2eb6eca8baa86b89494b8a0d9439a0f72ee (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.c | 9 |
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); |
