• Julia Lawall's avatar
    drivers/serial/ucc_uart.c: Add of_node_put to avoid memory leak · 48a10cdf
    Julia Lawall authored
    Add a call to of_node_put in the error handling code following a call to
    of_find_compatible_node or of_find_node_by_type.
    
    This patch also substantially reorganizes the error handling code in the
    function, to that it is possible first to jump to code that frees qe_port
    and then to jump to code that also puts np.
    
    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: default avatarJulia Lawall <julia@diku.dk>
    Acked-by: default avatarTimur Tabi <timur@freescale.com>
    Acked-by: default avatarGrant Likely <grant.likely@secretlab.ca>
    Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
    48a10cdf
ucc_uart.c 40.8 KB