Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e547c003 authored by Frank Rowand's avatar Frank Rowand Committed by Frank Rowand
Browse files

of: improve reporting invalid overlay target path



Errors while developing the patch to create of_overlay_fdt_apply()
exposed inadequate error messages to debug problems when overlay
devicetree fragment nodes contain an invalid target path.  Improve
the messages in find_target_node() to remedy this.

Signed-off-by: default avatarFrank Rowand <frank.rowand@sony.com>
parent db2f3762
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -488,20 +488,30 @@ static int build_changeset(struct overlay_changeset *ovcs)
 */
static struct device_node *find_target_node(struct device_node *info_node)
{
	struct device_node *node;
	const char *path;
	u32 val;
	int ret;

	ret = of_property_read_u32(info_node, "target", &val);
	if (!ret)
		return of_find_node_by_phandle(val);
	if (!ret) {
		node = of_find_node_by_phandle(val);
		if (!node)
			pr_err("find target, node: %pOF, phandle 0x%x not found\n",
			       info_node, val);
		return node;
	}

	ret = of_property_read_string(info_node, "target-path", &path);
	if (!ret)
		return of_find_node_by_path(path);
	if (!ret) {
		node =  of_find_node_by_path(path);
		if (!node)
			pr_err("find target, node: %pOF, path '%s' not found\n",
			       info_node, path);
		return node;
	}

	pr_err("Failed to find target for node %p (%s)\n",
		info_node, info_node->name);
	pr_err("find target, node: %pOF, no target property\n", info_node);

	return NULL;
}