net: dsa: qca8k: Add of_node_put() in qca8k_setup_mdio_bus()
authorNishka Dasgupta <nishkadg.linux@gmail.com>
Sun, 4 Aug 2019 15:30:18 +0000 (21:00 +0530)
committerDavid S. Miller <davem@davemloft.net>
Tue, 6 Aug 2019 21:35:13 +0000 (14:35 -0700)
commitf26e0cca14c9494c863d8fa6825b10bd12dc9eaa
treeeec432e5613dcf4d48a61c067f716bee990cd67e
parent443bfb4acb83a6f0b7d9b11ac32f17c67f14e995
net: dsa: qca8k: Add of_node_put() in qca8k_setup_mdio_bus()

Each iteration of for_each_available_child_of_node() puts the previous
node, but in the case of a return from the middle of the loop, there
is no put, thus causing a memory leak. Hence add an of_node_put() before
the return.
Additionally, the local variable ports in the function
qca8k_setup_mdio_bus() takes the return value of of_get_child_by_name(),
which gets a node but does not put it. If the function returns without
putting ports, it may cause a memory leak. Hence put ports before the
mid-loop return statement, and also outside the loop after its last usage
in this function.
Issues found with Coccinelle.

Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/qca8k.c