[PATCH] of/fdt: Check against '/chosen' in early_init_dt_scan_chosen

From: Chris Packham
Date: Tue Jan 26 2021 - 05:41:52 EST


of_scan_flat_dt() passes the name of the visited node to the iterator.
In the case of '/chosen' this includes the leading '/'. Update
early_init_dt_scan_chosen() to expect this.

Fixes: 7536c7e03e74 ("of/fdt: Remove redundant kbasename function call")
Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
---
drivers/of/fdt.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index feb0f2d67fc5..861aedf0bb7c 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -1043,7 +1043,10 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);

if (depth != 1 || !data ||
- (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0))
+ (strcmp(uname, "chosen") != 0 &&
+ strcmp(uname, "chosen@0") != 0 &&
+ strcmp(uname, "/chosen") != 0 &&
+ strcmp(uname, "/chosen@0") != 0))
return 0;

early_init_dt_check_for_initrd(node);
--
2.30.0