diff options
author | Amitoj Kaur Chawla <amitoj1606@gmail.com> | 2016-01-22 23:38:38 +0530 |
---|---|---|
committer | Sudeep Holla <sudeep.holla@arm.com> | 2016-02-01 09:59:58 +0000 |
commit | d99875eebfebec5432981273fac0547f3e34f2d7 (patch) | |
tree | f6c63bbad0821b3dc0d4ddceb4a7a1fce2a8b354 /drivers/bus/vexpress-config.c | |
parent | 36f90b0a2ddd60823fe193a85e60ff1906c2a9b3 (diff) | |
download | lwn-d99875eebfebec5432981273fac0547f3e34f2d7.tar.gz lwn-d99875eebfebec5432981273fac0547f3e34f2d7.zip |
bus: vexpress-config: Add missing of_node_put
for_each_compatible_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_compatible_node(n, ...) {
... when != of_node_put(n)
when != e = n
(
return n;
+ of_node_put(n);
? return ...;
)
...
}
// </smpl>
Acked-by: Liviu Dudau <Liviu.Dudau@arm.com>
Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'drivers/bus/vexpress-config.c')
-rw-r--r-- | drivers/bus/vexpress-config.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/bus/vexpress-config.c b/drivers/bus/vexpress-config.c index 6575c0fe6a4e..c3cb76b363c6 100644 --- a/drivers/bus/vexpress-config.c +++ b/drivers/bus/vexpress-config.c @@ -192,8 +192,10 @@ static int __init vexpress_config_init(void) /* Need the config devices early, before the "normal" devices... */ for_each_compatible_node(node, NULL, "arm,vexpress,config-bus") { err = vexpress_config_populate(node); - if (err) + if (err) { + of_node_put(node); break; + } } return err; |