mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] net: dsa: microchip: drop the parent MDIO bus reference
@ 2026-11-03 10:05 Wentao Liang
  2026-11-03 10:10 ` netdev-bot+sinfo
  2026-11-03 10:25 ` Krzysztof Kozlowski
  0 siblings, 2 replies; 3+ messages in thread
From: Wentao Liang @ 2026-11-03 10:05 UTC (permalink / raw)
  To: Woojung Huh, UNGLinuxDriver, Andrew Lunn, Vladimir Oltean,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: netdev, linux-kernel, Wentao Liang, stable

ksz_mdio_register() obtains the parent MDIO bus with of_mdio_find_bus(),
which takes a reference on the embedded struct device, and stores it in
dev->parent_mdio_bus for the side MDIO accessors.  Nothing ever drops
that reference, so it is leaked on the probe error paths and when the
switch device is torn down.

Register a devres action to put the device when the DSA switch device
is released.  The child MDIO bus is unregistered before the action
runs, so the parent bus stays valid for the whole lifetime of the
switch.

Fixes: 9afaf0eec2ab ("net: dsa: microchip: Refactor MDIO handling for side MDIO access")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/net/dsa/microchip/ksz_common.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 767c8fe8e819..ddd821fa0d3e 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -2392,6 +2392,17 @@ int ksz_parse_dt_phy_config(struct ksz_device *dev, struct mii_bus *bus,
 	return 0;
 }
 
+/**
+ * ksz_mdio_put_parent_bus - Drop the reference on a parent MDIO bus
+ * @data: mii_bus obtained from of_mdio_find_bus()
+ */
+static void ksz_mdio_put_parent_bus(void *data)
+{
+	struct mii_bus *bus = data;
+
+	put_device(&bus->dev);
+}
+
 /**
  * ksz_mdio_register - Register and configure the MDIO bus for the KSZ device.
  * @dev: Pointer to the KSZ device structure.
@@ -2431,6 +2442,12 @@ int ksz_mdio_register(struct ksz_device *dev)
 			goto put_mdio_node;
 		}
 
+		ret = devm_add_action_or_reset(ds->dev,
+					       ksz_mdio_put_parent_bus,
+					       parent_bus);
+		if (ret)
+			goto put_mdio_node;
+
 		dev->parent_mdio_bus = parent_bus;
 	}
 
-- 
2.34.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-11-03 10:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-03 10:05 [PATCH] net: dsa: microchip: drop the parent MDIO bus reference Wentao Liang
2026-11-03 10:10 ` netdev-bot+sinfo
2026-11-03 10:25 ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®