1
0
Fork 0

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: Nishka Dasgupta <nishkadg.linux@gmail.com>
Signed-off-by: Rob Herring <robh@kernel.org>
alistair/sunxi64-5.4-dsi
Nishka Dasgupta 2019-07-16 11:13:30 +05:30 committed by Rob Herring
parent 740ce365a4
commit 60d437bbff
1 changed files with 9 additions and 3 deletions

View File

@ -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;