diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2015-12-21 17:39:44 +0100 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-12-22 13:44:00 +0100 |
commit | 21a8fe8863199fb7818521548e217646085fe3fd (patch) | |
tree | 3cdd2d99e0fa1067a1873287662590fc92f575d8 /drivers/pinctrl/pinctrl-tegra-xusb.c | |
parent | 0eccc9cb4c1443c2665466e35f6e138381b8afd9 (diff) | |
download | linux-21a8fe8863199fb7818521548e217646085fe3fd.tar.gz linux-21a8fe8863199fb7818521548e217646085fe3fd.tar.bz2 linux-21a8fe8863199fb7818521548e217646085fe3fd.zip |
pinctrl-tegra: add missing of_node_put
for_each_child_of_node performs an of_node_get on each iteration, so a
return from 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;
@@
for_each_child_of_node(e1,n) {
...
(
of_node_put(n);
|
e = n
|
return n;
|
+ of_node_put(n);
? return ...;
)
...
}
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-tegra-xusb.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-tegra-xusb.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra-xusb.c b/drivers/pinctrl/pinctrl-tegra-xusb.c index 84a43e612952..bd3aa5a4fd6d 100644 --- a/drivers/pinctrl/pinctrl-tegra-xusb.c +++ b/drivers/pinctrl/pinctrl-tegra-xusb.c @@ -253,8 +253,10 @@ static int tegra_xusb_padctl_dt_node_to_map(struct pinctrl_dev *pinctrl, err = tegra_xusb_padctl_parse_subnode(padctl, np, maps, &reserved_maps, num_maps); - if (err < 0) + if (err < 0) { + of_node_put(np); return err; + } } return 0; |