[PATCH] net: stmmac: release MDIO node if bus data allocation fails

Wentao Liang vulab at iscas.ac.cn
Tue Nov 3 02:28:56 PST 2026


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 at vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab at iscas.ac.cn>
---
 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




More information about the linux-arm-kernel mailing list