public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/8] fdtgrep: Improve error handling with invalid device tree
@ 2016-03-07  2:45 Simon Glass
  2016-03-07  2:45 ` [U-Boot] [PATCH 2/8] patman: Add a missing space in GetMetaDataForList() Simon Glass
                   ` (7 more replies)
  0 siblings, 8 replies; 28+ messages in thread
From: Simon Glass @ 2016-03-07  2:45 UTC (permalink / raw)
  To: u-boot

This tool requires that the aliases node be the first node in the tree. But
when it is not, it does not handle things gracefully. In fact it crashes.

Fix this, and add a more helpful error message.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 tools/fdtgrep.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
index 67aa41a..8d3fef4 100644
--- a/tools/fdtgrep.c
+++ b/tools/fdtgrep.c
@@ -660,6 +660,8 @@ static int fdtgrep_find_regions(const void *fdt,
 		if (!ret)
 			count++;
 	}
+	if (ret && ret != -FDT_ERR_NOTFOUND)
+		return ret;
 
 	/* Find all the aliases and add those regions back in */
 	if (disp->add_aliases && count < max_regions) {
@@ -667,7 +669,11 @@ static int fdtgrep_find_regions(const void *fdt,
 
 		new_count = fdt_add_alias_regions(fdt, region, count,
 						  max_regions, &state);
-		if (new_count <= max_regions) {
+		if (new_count == -FDT_ERR_NOTFOUND) {
+			/* No alias node found */
+		} else if (new_count < 0) {
+			return new_count;
+		} else if (new_count <= max_regions) {
 			/*
 			* The alias regions will now be@the end of the list.
 			* Sort the regions by offset to get things into the
@@ -679,9 +685,6 @@ static int fdtgrep_find_regions(const void *fdt,
 		}
 	}
 
-	if (ret != -FDT_ERR_NOTFOUND)
-		return ret;
-
 	return count;
 }
 
@@ -807,6 +810,9 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
 				disp->flags);
 		if (count < 0) {
 			report_error("fdt_find_regions", count);
+			if (count == -FDT_ERR_BADLAYOUT)
+				fprintf(stderr,
+					"/aliases node must come before all other nodes\n");
 			return -1;
 		}
 		if (count <= max_regions)
-- 
2.7.0.rc3.207.g0ac5344

^ permalink raw reply related	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2016-03-13  1:52 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-07  2:45 [U-Boot] [PATCH 1/8] fdtgrep: Improve error handling with invalid device tree Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 2/8] patman: Add a missing space in GetMetaDataForList() Simon Glass
2016-03-07 16:43   ` Joe Hershberger
2016-03-13  1:51     ` Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 3/8] buildman: patman: Fix -H when installed as a symlink Simon Glass
2016-03-07 16:44   ` Joe Hershberger
2016-03-13  1:51     ` Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 4/8] buildman: Fix up a few code inconsistencies in toolchain.py Simon Glass
2016-03-07 16:45   ` Joe Hershberger
2016-03-13  1:51     ` Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 5/8] buildman: Allow branch names which conflict with directories Simon Glass
2016-03-07 16:46   ` Joe Hershberger
2016-03-07  2:45 ` [U-Boot] [PATCH 6/8] buildman: Allow the toolchain priority to be specified Simon Glass
2016-03-07 16:50   ` Joe Hershberger
2016-03-13  1:52     ` Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 7/8] buildman: Allow the toolchain architecture " Simon Glass
2016-03-07 16:58   ` Joe Hershberger
2016-03-13  1:52     ` Simon Glass
2016-03-07  2:45 ` [U-Boot] [PATCH 8/8] buildman: Add a way to specific a full toolchain prefix Simon Glass
2016-03-07 16:59   ` Joe Hershberger
2016-03-07 21:08   ` Stephen Warren
2016-03-13  1:50     ` Simon Glass
2016-03-07  3:07 ` [U-Boot] [PATCH 1/8] fdtgrep: Improve error handling with invalid device tree Masahiro Yamada
2016-03-07  3:31   ` Simon Glass
2016-03-07 16:37     ` Masahiro Yamada
2016-03-07 16:42       ` Joe Hershberger
2016-03-07 18:26         ` Simon Glass
2016-03-13  1:51           ` Simon Glass

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox