2014-10-29 18:15:07

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH] of/fdt: Don't clear initial_boot_params if fdt_check_header() fails

If the device tree pointer is NULL, early_init_dt_verify() fails, leaving
initial_boot_params unchanged. If the device tree pointer is non-NULL but
invalid, early_init_dt_verify() again fails but this time it also clears
initial_boot_params.

Leave initial_boot_params unchanged if the device tree pointer is invalid.
This doesn't fix a bug, but it makes the behavior more consistent and
easier to analyze.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
drivers/of/fdt.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d1ffca8b34ea..55a566a53f36 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -994,15 +994,12 @@ bool __init early_init_dt_verify(void *params)
if (!params)
return false;

- /* Setup flat device-tree pointer */
- initial_boot_params = params;
-
/* check device tree validity */
- if (fdt_check_header(params)) {
- initial_boot_params = NULL;
+ if (fdt_check_header(params))
return false;
- }

+ /* Setup flat device-tree pointer */
+ initial_boot_params = params;
return true;
}


2014-11-04 16:08:50

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH] of/fdt: Don't clear initial_boot_params if fdt_check_header() fails

On Wed, 29 Oct 2014 12:15:00 -0600
, Bjorn Helgaas <[email protected]>
wrote:
> If the device tree pointer is NULL, early_init_dt_verify() fails, leaving
> initial_boot_params unchanged. If the device tree pointer is non-NULL but
> invalid, early_init_dt_verify() again fails but this time it also clears
> initial_boot_params.
>
> Leave initial_boot_params unchanged if the device tree pointer is invalid.
> This doesn't fix a bug, but it makes the behavior more consistent and
> easier to analyze.
>
> Signed-off-by: Bjorn Helgaas <[email protected]>

Looks correct. Applied.

g.

> ---
> drivers/of/fdt.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index d1ffca8b34ea..55a566a53f36 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -994,15 +994,12 @@ bool __init early_init_dt_verify(void *params)
> if (!params)
> return false;
>
> - /* Setup flat device-tree pointer */
> - initial_boot_params = params;
> -
> /* check device tree validity */
> - if (fdt_check_header(params)) {
> - initial_boot_params = NULL;
> + if (fdt_check_header(params))
> return false;
> - }
>
> + /* Setup flat device-tree pointer */
> + initial_boot_params = params;
> return true;
> }
>
>