[source] kernel: Add check to of_scan_flat_dt() before accessing initial_boot_params

LEDE Commits lede-commits at lists.infradead.org
Sun Dec 4 02:42:08 PST 2016


nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/832fb99da24ffe527e1ebd8363ea0d5a459dd594

commit 832fb99da24ffe527e1ebd8363ea0d5a459dd594
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Wed Nov 30 17:00:14 2016 +0100

    kernel: Add check to of_scan_flat_dt() before accessing initial_boot_params
    
    Fixes a bug that affects rt288x
    
    Signed-off-by: Tobias Wolf <dev-NTEO at vplace.de>
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...k-to-of_scan_flat_dt-before-accessing-ini.patch | 30 ++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/target/linux/generic/patches-4.4/104-of-Add-check-to-of_scan_flat_dt-before-accessing-ini.patch b/target/linux/generic/patches-4.4/104-of-Add-check-to-of_scan_flat_dt-before-accessing-ini.patch
new file mode 100644
index 0000000..e7c125d
--- /dev/null
+++ b/target/linux/generic/patches-4.4/104-of-Add-check-to-of_scan_flat_dt-before-accessing-ini.patch
@@ -0,0 +1,30 @@
+From: Tobias Wolf <dev-NTEO at vplace.de>
+Date: Wed, 23 Nov 2016 10:40:07 +0100
+Subject: [PATCH] of: Add check to of_scan_flat_dt() before accessing
+ initial_boot_params
+
+An empty __dtb_start to __dtb_end section might result in initial_boot_params
+being null for arch/mips/ralink. This showed that the boot process hangs
+indefinitely in of_scan_flat_dt().
+
+Signed-off-by: Tobias Wolf <dev-NTEO at vplace.de>
+---
+
+--- a/drivers/of/fdt.c
++++ b/drivers/of/fdt.c
+@@ -632,9 +632,12 @@ int __init of_scan_flat_dt(int (*it)(uns
+ 	const char *pathp;
+ 	int offset, rc = 0, depth = -1;
+ 
+-        for (offset = fdt_next_node(blob, -1, &depth);
+-             offset >= 0 && depth >= 0 && !rc;
+-             offset = fdt_next_node(blob, offset, &depth)) {
++	if (!blob)
++		return 0;
++
++	for (offset = fdt_next_node(blob, -1, &depth);
++	     offset >= 0 && depth >= 0 && !rc;
++	     offset = fdt_next_node(blob, offset, &depth)) {
+ 
+ 		pathp = fdt_get_name(blob, offset, NULL);
+ 		if (*pathp == '/')



More information about the lede-commits mailing list