03 Dec, 2015

1 commit

  • for_each_available_child_of_node performs an of_node_get on each iteration,
    so a return from the middle of the loop requires an of_node_put.

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

    //
    @@
    expression root,e;
    local idexpression child;
    @@

    for_each_available_child_of_node(root, child) {
    ... when != of_node_put(child)
    when != e = child
    (
    return child;
    |
    * return ...;
    )
    ...
    }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Kishon Vijay Abraham I

    Julia Lawall
     

06 Oct, 2015

1 commit