video: omapdss: delete unneeded of_node_put
authorJulia Lawall <Julia.Lawall@lip6.fr>
Mon, 12 Oct 2015 20:43:14 +0000 (22:43 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 29 Dec 2015 09:06:30 +0000 (11:06 +0200)
Device node iterators perform an of_node_put on each iteration, so putting
an of_node_put before a continue results in a double put.

A simplified version of the semantic match that finds this problem is as
follows (http://coccinelle.lip6.fr):

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

 i(..., child, ...) {
   ... when != of_node_get(child)
*  of_node_put(child);
   ...
*  continue;
}
// </smpl>

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/fbdev/omap2/dss/omapdss-boot-init.c

index 8b6f6d5..136d304 100644 (file)
@@ -199,10 +199,8 @@ static int __init omapdss_boot_init(void)
        omapdss_walk_device(dss, true);
 
        for_each_available_child_of_node(dss, child) {
-               if (!of_find_property(child, "compatible", NULL)) {
-                       of_node_put(child);
+               if (!of_find_property(child, "compatible", NULL))
                        continue;
-               }
 
                omapdss_walk_device(child, true);
        }