diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-12-04 11:49:43 +1100 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-12-04 07:27:08 -0600 |
commit | 2d72816ccfdcfd8039ab0b8883f9eeac895984bb (patch) | |
tree | 35fce1e48325e1bc495d07e5b209cbcc48ac1e24 | |
parent | 2b7dc8dce549ad72ad437b254bf756d7ba4c2a5a (diff) | |
download | dtc-2d72816ccfdcfd8039ab0b8883f9eeac895984bb.zip dtc-2d72816ccfdcfd8039ab0b8883f9eeac895984bb.tar.gz dtc-2d72816ccfdcfd8039ab0b8883f9eeac895984bb.tar.bz2 |
dtc: Fix uninitialized use of structure_ok
My rework of the tree checking code introduced a potentially nasty bug
- it uses the structure_ok variable uninitialized. This patch fixes
the problem. It's a fairly ugly bandaid approach, but the ugly will
disappear once future patches have folded the semantic checks into the
new framework.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | checks.c | 16 | ||||
-rw-r--r-- | dtc.c | 13 | ||||
-rw-r--r-- | dtc.h | 4 |
3 files changed, 18 insertions, 15 deletions
@@ -270,8 +270,12 @@ static struct check *check_table[] = { &phandle_references, }; -void process_checks(int force, struct node *dt) +int check_semantics(struct node *dt, int outversion, int boot_cpuid_phys); + +void process_checks(int force, struct boot_info *bi, + int checkflag, int outversion, int boot_cpuid_phys) { + struct node *dt = bi->dt; int i; int error = 0; @@ -292,6 +296,16 @@ void process_checks(int force, struct node *dt) "output forced\n"); } } + + if (checkflag) { + if (error) { + fprintf(stderr, "Warning: Skipping semantic checks due to structural errors\n"); + } else { + if (!check_semantics(bi->dt, outversion, + boot_cpuid_phys)) + fprintf(stderr, "Warning: Input tree has semantic errors\n"); + } + } } /* @@ -122,7 +122,6 @@ int main(int argc, char *argv[]) FILE *outf = NULL; int outversion = DEFAULT_FDT_VERSION; int boot_cpuid_phys = 0xfeedbeef; - int structure_ok; quiet = 0; reservenum = 0; @@ -205,17 +204,7 @@ int main(int argc, char *argv[]) if (! bi || ! bi->dt) die("Couldn't read input tree\n"); - process_checks(force, bi->dt); - - if (check) { - if (!structure_ok) { - fprintf(stderr, "Warning: Skipping semantic checks due to structural errors\n"); - } else { - if (!check_semantics(bi->dt, outversion, - boot_cpuid_phys)) - fprintf(stderr, "Warning: Input tree has semantic errors\n"); - } - } + process_checks(force, bi, check, outversion, boot_cpuid_phys); if (streq(outname, "-")) { outf = stdout; @@ -237,8 +237,8 @@ struct boot_info *build_boot_info(struct reserve_info *reservelist, /* Checks */ -void process_checks(int force, struct node *dt); -int check_semantics(struct node *dt, int outversion, int boot_cpuid_phys); +void process_checks(int force, struct boot_info *bi, + int checkflag, int outversion, int boot_cpuid_phys); /* Flattened trees */ |