From 54382390e40654957e16da7ba48ee86822ffe590 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 31 Jan 2007 15:45:26 +1100 Subject: Bugfix for CHECK_HAVE_WARN_PHANDLE() At present, the tree checking code in dtc will die with an assertion failure if given a tree which has the invalid value 0 or -1 in a property which should contain a phandle. This patch fixes the check to die more gracefully with an error message indicating the invalid phandle value. Signed-off-by: David Gibson --- livetree.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'livetree.c') diff --git a/livetree.c b/livetree.c index 3e06b31..9ace56c 100644 --- a/livetree.c +++ b/livetree.c @@ -427,9 +427,14 @@ static int check_structure(struct node *tree) struct node *ref; \ CHECK_HAVE_WARN_ONECELL((xnode), (propname)); \ if (prop) {\ - ref = get_node_by_phandle((root), propval_cell(prop)); \ - if (! ref) \ - DO_ERR("\"%s\" property in %s refers to non-existant phandle %x\n", (propname), (xnode)->fullpath, propval_cell(prop)); \ + cell_t phandle = propval_cell(prop); \ + if ((phandle == 0) || (phandle == -1)) { \ + DO_ERR("\"%s\" property in %s contains an invalid phandle %x\n", (propname), (xnode)->fullpath, phandle); \ + } else { \ + ref = get_node_by_phandle((root), propval_cell(prop)); \ + if (! ref) \ + DO_ERR("\"%s\" property in %s refers to non-existant phandle %x\n", (propname), (xnode)->fullpath, propval_cell(prop)); \ + } \ } \ } while (0) -- cgit v1.2.1