[PATCH] net: stmmac: release MDIO node if bus data allocation fails
From: Wentao Liang
Date: Tue Nov 03 2026 - 07:16:40 EST
stmmac_mdio_setup() looks up the MDIO device tree node and stores it in
plat->mdio_node before allocating plat->mdio_bus_data. If that allocation
fails, the function returns -ENOMEM without dropping the node reference.
The caller jumps to error_put_phy on this error, which only releases
plat->phy_node and never reaches error_put_mdio, so the reference taken
for the MDIO node is lost. Drop it before returning.
Fixes: 1a981c0586c0 ("net: stmmac: Make MDIO bus reset optional")
Cc: stable@xxxxxxxxxxxxxxx
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 3ea16d618215..36f31bad11ca 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -355,8 +355,10 @@ static int stmmac_mdio_setup(struct plat_stmmacenet_data *plat,
plat->mdio_bus_data = devm_kzalloc(dev,
sizeof(*plat->mdio_bus_data),
GFP_KERNEL);
- if (!plat->mdio_bus_data)
+ if (!plat->mdio_bus_data) {
+ of_node_put(plat->mdio_node);
return -ENOMEM;
+ }
plat->mdio_bus_data->needs_reset = true;
}
--
2.34.1