drm/imx: imx-ldb: add missing of_node_puts
authorJulia Lawall <Julia.Lawall@lip6.fr>
Sun, 13 Jan 2019 08:47:42 +0000 (09:47 +0100)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Thu, 17 Jan 2019 13:59:02 +0000 (14:59 +0100)
commitaa3312012f103f91f123600bbf768b11c8f431bc
tree660389a2bafad85d57b557e1ce3c60779875483e
parent2c0408dd0d8906b26fe8023889af7adf5e68b2c2
drm/imx: imx-ldb: add missing of_node_puts

The device node iterators perform an of_node_get on each
iteration, so a jump out of the loop requires an of_node_put.

Move the initialization channel->child = child; down to just
before the call to imx_ldb_register so that intervening failures
don't need to clear it.  Add a label at the end of the function to
do all the of_node_puts.

The semantic patch that finds part of this problem is as follows
(http://coccinelle.lip6.fr):

// <smpl>
@@
expression root,e;
local idexpression child;
iterator name for_each_child_of_node;
@@

 for_each_child_of_node(root, child) {
   ... when != of_node_put(child)
       when != e = child
(
   return child;
|
*  return ...;
)
   ...
 }
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/drm/imx/imx-ldb.c