[PATCH v2] fix: net: renesas: rswitch_mii_register: fix double of_node_put after of_mdiobus_register
From: WenTao Liang
Date: Fri Jun 26 2026 - 11:26:35 EST
After of_mdiobus_register succeeds, the mdio_np reference ownership is
transferred to the mii_bus device (released via fwnode_handle_put during
mdiobus_release). The success path calls of_node_put(mdio_np) which,
combined with the automatic release via bus teardown, results in a double
put and refcount underflow.
Move of_node_put so it is only called in the error path where
of_mdiobus_register failed. On success, the bus driver manages the
reference lifecycle.
Cc: stable@xxxxxxxxxxxxxxx
Fixes: 3590918b5d07 ("net: ethernet: renesas: Add support for Ethernet Switch")
Signed-off-by: WenTao Liang <vulab@xxxxxxxxxxx>
---
drivers/net/ethernet/renesas/rswitch_main.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethernet/renesas/rswitch_main.c
index 6fe964816322..d5f1b5fd5817 100644
--- a/drivers/net/ethernet/renesas/rswitch_main.c
+++ b/drivers/net/ethernet/renesas/rswitch_main.c
@@ -1387,15 +1387,13 @@ static int rswitch_mii_register(struct rswitch_device *rdev)
err = of_mdiobus_register(mii_bus, mdio_np);
if (err < 0) {
mdiobus_free(mii_bus);
- goto out;
+ of_node_put(mdio_np);
+ return err;
}
rdev->etha->mii = mii_bus;
-out:
- of_node_put(mdio_np);
-
- return err;
+ return 0;
}
static void rswitch_mii_unregister(struct rswitch_device *rdev)
--
2.39.5 (Apple Git-154)