• J
    ASoC: pl022_ds.c: Add of_node_put to avoid memory leak · 880b8ffd
    Julia Lawall 提交于
    Add a call to of_node_put in the error handling code following a call to
    of_parse_phandle.
    
    This patch also moves the existing call to of_node_put tothe end of the
    error handling code, to make it possible to jump to of_node_put without
    doing the other cleanup operations.  These appear to be disjoint
    operations, so the ordering doesn't matter.
    
    The semantic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)
    
    // <smpl>
    @r exists@
    local idexpression x;
    expression E,E1,E2;
    statement S;
    @@
    
    *x =
    (of_find_node_by_path
    |of_find_node_by_name
    |of_find_node_by_phandle
    |of_get_parent
    |of_get_next_parent
    |of_get_next_child
    |of_find_compatible_node
    |of_match_node
    |of_find_node_by_type
    |of_find_node_with_property
    |of_find_matching_node
    |of_parse_phandle
    )(...);
    ...
    if (x == NULL) S
    <... when != x = E
    *if (...) {
      ... when != of_node_put(x)
          when != if (...) { ... of_node_put(x); ... }
    (
      return <+...x...+>;
    |
    *  return ...;
    )
    }
    ...>
    (
    E2 = x;
    |
    of_node_put(x);
    )
    // </smpl>
    Signed-off-by: NJulia Lawall <julia@diku.dk>
    Acked-by: NTimur Tabi <timur@freescale.com>
    Acked-by: NLiam Girdwood <lrg@slimlogic.uo.uk>
    Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
    880b8ffd
p1022_ds.c 16.9 KB