diff options
author | Julia Lawall <julia.lawall@lip6.fr> | 2015-10-25 14:57:03 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-26 22:08:12 -0700 |
commit | 028623418766ea64f4256035b06ac6cbc0a67892 (patch) | |
tree | 4b6b9b72bdb27d414d51fbedcbb6e2ae5d70bc15 | |
parent | 447ed7360037b6e38c0206ddcbd04a256ec94099 (diff) | |
download | lwn-028623418766ea64f4256035b06ac6cbc0a67892.tar.gz lwn-028623418766ea64f4256035b06ac6cbc0a67892.zip |
net: phy: mdio: add missing of_node_put
for_each_available_child_of_node performs an of_node_get on each iteration, so
a break out of the loop requires an of_node_put.
A simplified version of the semantic patch that fixes this problem is as
follows (http://coccinelle.lip6.fr):
// <smpl>
@@
expression root,e;
local idexpression child;
@@
for_each_available_child_of_node(root, child) {
... when != of_node_put(child)
when != e = child
(
return child;
|
+ of_node_put(child);
? return ...;
)
...
}
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/phy/mdio-mux-mmioreg.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/phy/mdio-mux-mmioreg.c b/drivers/net/phy/mdio-mux-mmioreg.c index 2377c1341172..7fde454fbc4f 100644 --- a/drivers/net/phy/mdio-mux-mmioreg.c +++ b/drivers/net/phy/mdio-mux-mmioreg.c @@ -113,12 +113,14 @@ static int mdio_mux_mmioreg_probe(struct platform_device *pdev) if (!iprop || len != sizeof(uint32_t)) { dev_err(&pdev->dev, "mdio-mux child node %s is " "missing a 'reg' property\n", np2->full_name); + of_node_put(np2); return -ENODEV; } if (be32_to_cpup(iprop) & ~s->mask) { dev_err(&pdev->dev, "mdio-mux child node %s has " "a 'reg' value with unmasked bits\n", np2->full_name); + of_node_put(np2); return -ENODEV; } } |