On Wed, Jan 16, 2008 at 02:49:39PM +1100, David Gibson wrote: > On Tue, Jan 15, 2008 at 10:52:30AM -0600, Scott Wood wrote: > > On Tue, Jan 15, 2008 at 11:16:57AM +1100, David Gibson wrote: > > > On Mon, Jan 14, 2008 at 10:30:04AM -0600, Scott Wood wrote: [snip] > > > > + if (depth != 0) > > > > + return -FDT_ERR_BADSTRUCTURE; > > > > > > I think this should be FDT_ERR_TRUNCATED. > > > > I'd expect TRUNCATED when we hit totalsize without an FDT_END, not when > > we hit FDT_END in an inappropriate context. > > Well, TRUNCATED is valid for either situation, and fdt_next_tag() also > returns FDT_END if it reaches totalsize.
Thought I should elaborate on this a bit - I'm not sure that the current handling of FDT_ERR_TRUNCATED is entirely correct. The description says only when the FDT_END tag is missing, but the way fdt_next_tag() works means we will also (for some functions, at least) give this error when FDT_END appears without a suitable number of FDT_END_NODE tags preceding it. The rationale behind FDT_ERR_TRUNCATED - why it exists as a separate code from FDT_ERR_BADSTRUCTURE - is that the read-only functions should work more-or-less sanely on incomplete trees created by the sequential-write functions (fdt_sw.c). FDT_ERR_TRUNCATED is supposed to indicate that the function couldn't complete properly because the tree is malformed, but that suitable calls to the fdt_sw functions could complete the tree so that it's no longer malformed. I'm not sure that either the comment describing TRUNCATED, or the code entirely matches that rationale... -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev