[PATCH 2/3] of/flattree: Fix crash when device tree absent

Benjamin Herrenschmidt benh at kernel.crashing.org
Mon Jul 19 10:04:42 EST 2010


On Wed, 2010-07-14 at 17:31 -0600, Grant Likely wrote:
> This patch fixes the condition where device tree support is compiled
> in, but no device tree was proved by firmware.  It makes
> of_platform_bus_probe() explicitly check for a NULL device tree
> pointer, and adds an error message if the device tree was unable
> to be flattened.
> 
> Signed-off-by: Grant Likely <grant.likely at secretlab.ca>

Not sure about the message..

> ---
>  drivers/of/fdt.c      |    2 ++
>  drivers/of/platform.c |    2 ++
>  2 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index d61fda8..66401bc 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -94,6 +94,8 @@ int __init of_scan_flat_dt(int (*it)(unsigned long node,
>  			break;
>  	} while (1);
>  
> +	if (rc)
> +		pr_err("Failed to unflatten device tree blob.  rc=%i\n", rc);
>  	return rc;
>  }

This is of_scan_flat_dt() ... might be better using something like

"Failed to scan the flat device-tree (error %d)". Might also want to
rate limit it to 1.

> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
> index f0ca906..9bc6999 100644
> --- a/drivers/of/platform.c
> +++ b/drivers/of/platform.c
> @@ -674,6 +674,8 @@ int of_platform_bus_probe(struct device_node *root,
>  		root = of_find_node_by_path("/");
>  	else
>  		of_node_get(root);
> +	if (root == NULL)
> +		return -EINVAL;
>  
>  	pr_debug("of_platform_bus_probe()\n");
>  	pr_debug(" starting at: %s\n", root->full_name);

Cheers,
Ben.



More information about the devicetree-discuss mailing list