Thread (27 messages) flat view 27 messages, 3 authors, 2026-02-02

[net-next,v2,09/15] net: ftgmac100: Always register the MDIO bus when it exists

From: Jacky Chou <jacky_chou@aspeedtech.com>
Date: 2026-01-22 07:32:07

Hi Andrew,

On Tue, Jan 20, 2026 at 12:14:07PM +0000, Simon Horman wrote:
quoted
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
Full review at: https://netdev-ai.bots.linux.dev/ai-review.html
---
net: ftgmac100: Always register the MDIO bus when it exists

This patch moves MDIO bus registration earlier in the probe function
for FARADAY, AST2400, and AST2500 MACs, simplifying the code by
registering it unconditionally when the hardware has an MDIO controller.

Note: These issues appear to be fixed later in the series by commits
8961daa5f2c0 ("Simplify error handling for ftgmac100_setup_mdio") and
046e51399f0f ("Move DT probe into a helper").
quoted
diff --git a/drivers/net/ethernet/faraday/ftgmac100.c
b/drivers/net/ethernet/faraday/ftgmac100.c
index f1cb5dc37919..931fdf3d07d1 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -1957,6 +1957,14 @@ static int ftgmac100_probe(struct
platform_device *pdev)
quoted
quoted
 		priv->txdes0_edotr_mask = BIT(15);
 	}

+	if (priv->mac_id == FTGMAC100_FARADAY ||
+	    priv->mac_id == FTGMAC100_AST2400 ||
+	    priv->mac_id == FTGMAC100_AST2500) {
+		err = ftgmac100_setup_mdio(netdev);
+		if (err)
+			goto err_phy_connect;
+	}
If ftgmac100_setup_mdio() fails after of_mdiobus_register() returns an
error, it calls mdiobus_free(priv->mii_bus) but does not set
priv->mii_bus to NULL. The goto err_phy_connect then leads to
ftgmac100_destroy_mdio() which checks if (!priv->mii_bus) but finds a
dangling pointer, resulting in mdiobus_unregister() on freed memory
followed by a double free.

The call to register the MDIO bus has been moved earlier. That means the call
to ftgmac100_destroy_mdio() the bus also needs to move earlier on the error
cleanup path, before err_phy_connect:
I've been thinking about this part. One possible approach is to switch to
devm_mdiobus_alloc() and devm_of_mdiobus_register() instead of
mdiobus_alloc() and of_mdiobus_register().

With devm-managed MDIO resources, the explicit cleanup via
ftgmac100_destroy_mdio() would no longer be necessary, and the error paths
would become simpler and safer.

This should also avoid ordering issues in the error cleanup paths when MDIO
registration is moved earlier in the probe sequence.

Thanks,
Jacky
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help