diff options
author | Amitoj Kaur Chawla <amitoj1606@gmail.com> | 2016-01-25 18:23:07 +0100 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2016-06-14 11:39:39 +0200 |
commit | 55bb1d8355ce91662dc8760f24f578db5a595819 (patch) | |
tree | b18b1cfb4219ea751a0cbceb810be639493fce74 | |
parent | memory: tegra: Delete unneeded of_node_put() (diff) | |
download | linux-55bb1d8355ce91662dc8760f24f578db5a595819.tar.xz linux-55bb1d8355ce91662dc8760f24f578db5a595819.zip |
memory: tegra: mc: Add missing of_node_put()
for_each_child_of_node() performs an of_node_get() on each iteration, so
to break out of the loop an of_node_put() is required.
Found using Coccinelle. The semantic patch used for this is as follows:
// <smpl>
@@
expression e;
local idexpression n;
@@
for_each_child_of_node(..., n) {
... when != of_node_put(n)
when != e = n
(
return n;
|
+ of_node_put(n);
? return ...;
)
...
}
// </smpl>
Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | drivers/memory/tegra/mc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c index 85ce4beb7f03..a4803ac192bb 100644 --- a/drivers/memory/tegra/mc.c +++ b/drivers/memory/tegra/mc.c @@ -186,8 +186,10 @@ static int load_timings(struct tegra_mc *mc, struct device_node *node) timing = &mc->timings[i++]; err = load_one_timing(mc, timing, child); - if (err) + if (err) { + of_node_put(child); return err; + } } return 0; @@ -210,9 +212,9 @@ static int tegra_mc_setup_timings(struct tegra_mc *mc) continue; err = load_timings(mc, node); + of_node_put(node); if (err) return err; - of_node_put(node); break; } |