lkml.org 
[lkml]   [2015]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/5] pinctrl: sh-pfc: add missing of_node_put
    Date
    for_each_child_of_node performs an of_node_get on each iteration, so a
    goto out of the loop requires an of_node_put.

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

    // <smpl>
    @@
    local idexpression n;
    expression e,e1;
    identifier l;
    @@

    for_each_child_of_node(e1,n) {
    ...
    (
    of_node_put(n);
    |
    e = n
    |
    return n;
    |
    + of_node_put(n);
    ? goto l;
    )
    ...
    }
    l: ... when != n
    // </smpl>

    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>

    ---
    drivers/pinctrl/sh-pfc/pinctrl.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c
    index 863c3e3..87b0a59 100644
    --- a/drivers/pinctrl/sh-pfc/pinctrl.c
    +++ b/drivers/pinctrl/sh-pfc/pinctrl.c
    @@ -273,8 +273,10 @@ static int sh_pfc_dt_node_to_map(struct pinctrl_dev *pctldev,
    for_each_child_of_node(np, child) {
    ret = sh_pfc_dt_subnode_to_map(pctldev, child, map, num_maps,
    &index);
    - if (ret < 0)
    + if (ret < 0) {
    + of_node_put(child);
    goto done;
    + }
    }

    /* If no mapping has been found in child nodes try the config node. */


    \
     
     \ /
      Last update: 2015-12-21 18:41    [W:3.895 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site