summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnest Van Hoecke <ernest.vanhoecke@toradex.com>2026-02-19 18:32:22 +0100
committerErnest Van Hoecke <ernest.vanhoecke@toradex.com>2026-02-23 18:10:36 +0100
commitf964b63a47f373fb235c8512b165abf342e12e6e (patch)
tree2e1e73850d663c5c43a1d2107d9ad28cf726f98c
parenta75357a7fead48cf38e96eef931b1a1f63473dd9 (diff)
net: enetc: mdio: fix regulator leak in enetc_imdio_create error pathtoradex_6.12-2.0.x-imx
When 'enetc_imdio_create()' enables the optional 'serdes' regulator and later fails, the function exits through 'free_mdio_bus' without balancing 'regulator_enable()'. Route those failures through a common 'disable_regulator' label so the regulator is always disabled before freeing the MDIO bus. Link: https://community.nxp.com/t5/iMX95-Early-Access-Partner-for/iMX95-SGMII-support-issues/m-p/2317281 Upstream-Status: Pending Fixes: 5cc8089906c3 ("LF-10639-1 enetc: mdio: add regulator support for both imdio and emdio bus") Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
-rw-r--r--drivers/net/ethernet/freescale/enetc/enetc_pf_common.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c
index 77bd5ef9e2d6..4f7b5060dd26 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf_common.c
@@ -499,7 +499,7 @@ static int enetc_imdio_create(struct enetc_pf *pf)
err = mdiobus_register(bus);
if (err) {
dev_err(dev, "cannot register internal MDIO bus (%d)\n", err);
- goto free_mdio_bus;
+ goto disable_regulator;
}
if (is_enetc_rev1(pf->si)) {
@@ -548,6 +548,9 @@ static int enetc_imdio_create(struct enetc_pf *pf)
unregister_mdiobus:
mdiobus_unregister(bus);
+disable_regulator:
+ if (mdio_priv->regulator)
+ regulator_disable(mdio_priv->regulator);
free_mdio_bus:
mdiobus_free(bus);
return err;