diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2016-09-01 13:39:58 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-09-05 08:29:12 +0200 |
commit | da1f91422c2e3479066e22cc2795b7927dfe6714 (patch) | |
tree | 1561ef1d8d2f6d4544e543605e057f720d38e695 | |
parent | 79a2cc9fe6b1db9255c3947f2067adc8eb3ce048 (diff) | |
download | barebox-da1f91422c2e3479066e22cc2795b7927dfe6714.tar.gz barebox-da1f91422c2e3479066e22cc2795b7927dfe6714.tar.xz |
of_unflatten_dtb(): Check return value with IS_ERR
Of_unflatten_dtb returns a ERR_PTR value so checking it against NULL is
incorrect. Fix it in all of the places where this was happening.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/boards/highbank/init.c | 2 | ||||
-rw-r--r-- | arch/arm/cpu/dtb.c | 2 | ||||
-rw-r--r-- | arch/arm/lib/bootm.c | 2 | ||||
-rw-r--r-- | arch/mips/boot/dtb.c | 2 | ||||
-rw-r--r-- | arch/openrisc/lib/dtb.c | 2 | ||||
-rw-r--r-- | common/bootm.c | 6 |
6 files changed, 10 insertions, 6 deletions
diff --git a/arch/arm/boards/highbank/init.c b/arch/arm/boards/highbank/init.c index 1cb02e6e48..295d4757f2 100644 --- a/arch/arm/boards/highbank/init.c +++ b/arch/arm/boards/highbank/init.c @@ -77,7 +77,7 @@ static int highbank_mem_init(void) fdt = IOMEM(FIRMWARE_DTB_BASE); root = of_unflatten_dtb(fdt); - if (!root) { + if (IS_ERR(root)) { pr_warn("no dtb found at 0x1000 use default configuration\n"); fdt = NULL; goto not_found; diff --git a/arch/arm/cpu/dtb.c b/arch/arm/cpu/dtb.c index ae4ff2a9ad..b9390b46e6 100644 --- a/arch/arm/cpu/dtb.c +++ b/arch/arm/cpu/dtb.c @@ -48,7 +48,7 @@ static int of_arm_init(void) } root = of_unflatten_dtb(fdt); - if (root) { + if (!IS_ERR(root)) { of_set_root_node(root); of_fix_tree(root); if (IS_ENABLED(CONFIG_OFDEVICE)) diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 404a6ae6ad..56663feb89 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -267,7 +267,7 @@ static int do_bootz_linux_fdt(int fd, struct image_data *data) if (IS_BUILTIN(CONFIG_OFTREE)) { data->of_root_node = of_unflatten_dtb(oftree); - if (!data->of_root_node) { + if (IS_ERR(data->of_root_node)) { pr_err("unable to unflatten devicetree\n"); ret = -EINVAL; goto err_free; diff --git a/arch/mips/boot/dtb.c b/arch/mips/boot/dtb.c index 977c837887..e7633a5aff 100644 --- a/arch/mips/boot/dtb.c +++ b/arch/mips/boot/dtb.c @@ -51,7 +51,7 @@ static int of_mips_init(void) return 0; root = of_unflatten_dtb(__dtb_start); - if (root) { + if (!IS_ERR(root)) { pr_debug("using internal DTB\n"); of_set_root_node(root); if (IS_ENABLED(CONFIG_OFDEVICE)) diff --git a/arch/openrisc/lib/dtb.c b/arch/openrisc/lib/dtb.c index 4f63a7760f..04bb6d25cc 100644 --- a/arch/openrisc/lib/dtb.c +++ b/arch/openrisc/lib/dtb.c @@ -32,7 +32,7 @@ static int of_openrisc_init(void) return 0; root = of_unflatten_dtb(__dtb_start); - if (root) { + if (!IS_ERR(root)) { pr_debug("using internal DTB\n"); of_set_root_node(root); if (IS_ENABLED(CONFIG_OFDEVICE)) diff --git a/common/bootm.c b/common/bootm.c index 78d04d5806..59843195cd 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -336,6 +336,9 @@ int bootm_load_devicetree(struct image_data *data, unsigned long load_address) if (data->os_fit && data->os_fit->oftree) { data->of_root_node = of_unflatten_dtb(data->os_fit->oftree); + + if (IS_ERR(data->of_root_node)) + data->of_root_node = NULL; } else if (data->oftree_file) { size_t size; @@ -367,7 +370,8 @@ int bootm_load_devicetree(struct image_data *data, unsigned long load_address) free(oftree); - if (!data->of_root_node) { + if (IS_ERR(data->of_root_node)) { + data->of_root_node = NULL; pr_err("unable to unflatten devicetree\n"); return -EINVAL; } |