Commit 60d437bb authored by Nishka Dasgupta's avatar Nishka Dasgupta Committed by Rob Herring

of: resolver: Add of_node_put() before return and break

Each iteration of for_each_child_of_node puts the previous node, but in
the case of a return or break from the middle of the loop, there is no
put, thus causing a memory leak. Hence add an of_node_put before the
return or break in three places.
Issue found with Coccinelle.
Signed-off-by: default avatarNishka Dasgupta <nishkadg.linux@gmail.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 740ce365
...@@ -206,16 +206,22 @@ static int adjust_local_phandle_references(struct device_node *local_fixups, ...@@ -206,16 +206,22 @@ static int adjust_local_phandle_references(struct device_node *local_fixups,
for_each_child_of_node(local_fixups, child) { for_each_child_of_node(local_fixups, child) {
for_each_child_of_node(overlay, overlay_child) for_each_child_of_node(overlay, overlay_child)
if (!node_name_cmp(child, overlay_child)) if (!node_name_cmp(child, overlay_child)) {
of_node_put(overlay_child);
break; break;
}
if (!overlay_child) if (!overlay_child) {
of_node_put(child);
return -EINVAL; return -EINVAL;
}
err = adjust_local_phandle_references(child, overlay_child, err = adjust_local_phandle_references(child, overlay_child,
phandle_delta); phandle_delta);
if (err) if (err) {
of_node_put(child);
return err; return err;
}
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment