diff options
author | Amitoj Kaur Chawla <amitoj1606@gmail.com> | 2016-01-24 20:45:20 +0530 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2016-02-02 15:49:28 +0100 |
commit | 047d6d8401c2d8f59ae5f478486096c13147ddf7 (patch) | |
tree | 4862c9333cbae80a40aae1db21498507991dbc8e /drivers | |
parent | 442f53fb1be44c00263ebb8e7c2eff19dd019037 (diff) | |
download | linux-047d6d8401c2d8f59ae5f478486096c13147ddf7.tar.bz2 |
clk: tegra: Add missing of_node_put()
for_each_child_of_node() performs an of_node_get() on each iteration, so
before breaking 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 child;
@@
for_each_child_of_node(root, child) {
... when != of_node_put(child)
when != e = child
(
return child;
|
+ of_node_put(child);
? return ...;
)
...
}
// </smpl>
Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/clk/tegra/clk-emc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/clk/tegra/clk-emc.c b/drivers/clk/tegra/clk-emc.c index e1fe8f35d45c..74e7544f861b 100644 --- a/drivers/clk/tegra/clk-emc.c +++ b/drivers/clk/tegra/clk-emc.c @@ -450,8 +450,10 @@ static int load_timings_from_dt(struct tegra_clk_emc *tegra, struct emc_timing *timing = tegra->timings + (i++); err = load_one_timing_from_dt(tegra, timing, child); - if (err) + if (err) { + of_node_put(child); return err; + } timing->ram_code = ram_code; } @@ -499,9 +501,9 @@ struct clk *tegra_clk_register_emc(void __iomem *base, struct device_node *np, * fuses until the apbmisc driver is loaded. */ err = load_timings_from_dt(tegra, node, node_ram_code); + of_node_put(node); if (err) return ERR_PTR(err); - of_node_put(node); break; } |