Messages in this thread Patch in this message | | | From | Sumera Priyadarsini <> | Subject | [PATCH V2] net: dsa: Add of_node_put() before break statement | Date | Mon, 24 Aug 2020 00:20:56 +0530 |
| |
Every iteration of for_each_child_of_node() decrements the reference count of the previous node, however when control is transferred from the middle of the loop, as in the case of a return or break or goto, there is no decrement thus ultimately resulting in a memory leak.
Fix a potential memory leak in mt7530.c by inserting of_node_put() before the break statement.
Issue found with Coccinelle.
--- Changes in v2: Add another of_node_put() in for_each_child_of_node() as pointed out by Andrew.
---
Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com> --- drivers/net/dsa/mt7530.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 8dcb8a49ab67..e81198a65c26 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -1327,6 +1327,7 @@ mt7530_setup(struct dsa_switch *ds) if (phy_node->parent == priv->dev->of_node->parent) { ret = of_get_phy_mode(mac_np, &interface); if (ret && ret != -ENODEV) + of_node_put(mac_np) return ret; id = of_mdio_parse_addr(ds->dev, phy_node); if (id == 0) @@ -1334,6 +1335,7 @@ mt7530_setup(struct dsa_switch *ds) if (id == 4) priv->p5_intf_sel = P5_INTF_SEL_PHY_P4; } + of_node_put(mac_np); of_node_put(phy_node); break; } -- 2.17.1
| |