summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2016-09-01 13:39:58 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2016-09-05 08:29:12 +0200
commitda1f91422c2e3479066e22cc2795b7927dfe6714 (patch)
tree1561ef1d8d2f6d4544e543605e057f720d38e695
parent79a2cc9fe6b1db9255c3947f2067adc8eb3ce048 (diff)
downloadbarebox-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.c2
-rw-r--r--arch/arm/cpu/dtb.c2
-rw-r--r--arch/arm/lib/bootm.c2
-rw-r--r--arch/mips/boot/dtb.c2
-rw-r--r--arch/openrisc/lib/dtb.c2
-rw-r--r--common/bootm.c6
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;
}