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

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
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -206,17 +206,23 @@ static int adjust_local_phandle_references(struct device_node *local_fixups,
	for_each_child_of_node(local_fixups, 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;
			}

		if (!overlay_child)
		if (!overlay_child) {
			of_node_put(child);
			return -EINVAL;
		}

		err = adjust_local_phandle_references(child, overlay_child,
				phandle_delta);
		if (err)
		if (err) {
			of_node_put(child);
			return err;
		}
	}

	return 0;
}