diff mbox series

of/fdt: Check against '/chosen' in early_init_dt_scan_chosen

Message ID 20210126015159.23923-1-chris.packham@alliedtelesis.co.nz
State New
Headers show
Series of/fdt: Check against '/chosen' in early_init_dt_scan_chosen | expand

Commit Message

Chris Packham Jan. 26, 2021, 1:51 a.m. UTC
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@alliedtelesis.co.nz>
---
 drivers/of/fdt.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Rob Herring Jan. 26, 2021, 2:07 a.m. UTC | #1
On Mon, Jan 25, 2021 at 8:02 PM Chris Packham
<chris.packham@alliedtelesis.co.nz> wrote:
>
> 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@alliedtelesis.co.nz>
> ---
>  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))

2 out of 4 of those are wrong.

>                 return 0;
>
>         early_init_dt_check_for_initrd(node);
> --
> 2.30.0
>
diff mbox series

Patch

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