[PATCH v3] staging: octeon: fix OF node and fixed-link leaks

From: Oscar Alejandro Sánchez Lucero via B4 Relay

Date: Tue Nov 10 2026 - 09:40:59 EST


From: Oscar Alejandro Sánchez Lucero <aleszlucero@xxxxxxxxx>

Deregister fixed link and put OF node on probe failure and device removal
to prevent memory leaks.

Signed-off-by: Oscar Alejandro Sánchez Lucero <aleszlucero@xxxxxxxxx>
---
Oscar Alejandro Sánchez Lucero (1):
staging: octeon: fix OF node and fixed-link leaks on error and teardown
---
Changes in v3:
- Rebase into mainline and perform cross compilation validation for MIPS64.
---
drivers/staging/octeon/ethernet.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c
index 42ec4b8324a8..13df64d3f498 100644
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -114,6 +114,11 @@ static void cvm_oct_remove_device(int port)

cvm_oct_tx_shutdown_dev(dev);
unregister_netdev(dev);
+ if (priv->of_node) {
+ if (of_phy_is_fixed_link(priv->of_node))
+ of_phy_deregister_fixed_link(priv->of_node);
+ of_node_put(priv->of_node);
+ }
free_netdev(dev);
cvm_oct_device[port] = NULL;
}
@@ -919,10 +924,16 @@ static int cvm_oct_probe(struct platform_device *pdev)
}

if (!dev->netdev_ops) {
+ of_node_put(priv->of_node);
free_netdev(dev);
} else if (register_netdev(dev) < 0) {
netdev_err(dev, "Failed to register ethernet device for interface %d, port %d\n",
interface, priv->port);
+ if (priv->of_node) {
+ if (of_phy_is_fixed_link(priv->of_node))
+ of_phy_deregister_fixed_link(priv->of_node);
+ of_node_put(priv->of_node);
+ }
free_netdev(dev);
} else {
cvm_oct_device[priv->port] = dev;

---
base-commit: ddfe51b0a0f5dc9e415cc2c8ad8db17532dd426b
change-id: 20261107-octeon-of-node-leak-fix-8530bcba220e

Best regards,
--
Oscar Alejandro Sánchez Lucero <aleszlucero@xxxxxxxxx>