Commit 701ea57f authored by Shitalkumar Gandhi's avatar Shitalkumar Gandhi Committed by Jakub Kicinski
Browse files

net: rtsn: fix mdio_node leak in rtsn_mdio_alloc()



of_get_child_by_name() takes a reference. The rtsn_reset() and
rtsn_change_mode() failure paths jump to out_free_bus and leak
mdio_node.

Add out_put_node to drop it before falling through.

Fixes: b0d3969d ("net: ethernet: rtsn: Add support for Renesas Ethernet-TSN")
Signed-off-by: default avatarShitalkumar Gandhi <shitalkumar.gandhi@cambiumnetworks.com>
Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://patch.msgid.link/20260505123236.406000-1-shitalkumar.gandhi@cambiumnetworks.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e4182739
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -797,11 +797,11 @@ static int rtsn_mdio_alloc(struct rtsn_private *priv)
	/* Enter config mode before registering the MDIO bus */
	ret = rtsn_reset(priv);
	if (ret)
		goto out_free_bus;
		goto out_put_node;

	ret = rtsn_change_mode(priv, OCR_OPC_CONFIG);
	if (ret)
		goto out_free_bus;
		goto out_put_node;

	rtsn_modify(priv, MPIC, MPIC_PSMCS_MASK | MPIC_PSMHT_MASK,
		    MPIC_PSMCS_DEFAULT | MPIC_PSMHT_DEFAULT);
@@ -824,6 +824,8 @@ static int rtsn_mdio_alloc(struct rtsn_private *priv)

	return 0;

out_put_node:
	of_node_put(mdio_node);
out_free_bus:
	mdiobus_free(mii);
	return ret;