uboot-mt623x/libfdt
David Gibson a22d9cfbb5 libfdt: Rework/cleanup fdt_next_tag()
Currently, callers of fdt_next_tag() must usually follow the call with
some sort of call to fdt_offset_ptr() to verify that the blob isn't
truncated in the middle of the tag data they're going to process.
This is a bit silly, since fdt_next_tag() generally has to call
fdt_offset_ptr() on at least some of the data following the tag for
its own operation.

This patch alters fdt_next_tag() to always use fdt_offset_ptr() to
verify the data between its starting offset and the offset it returns
in nextoffset.  This simplifies fdt_get_property() which no longer has
to verify itself that the property data is all present.

At the same time, I neaten and clarify the error handling for
fdt_next_tag().  Previously, fdt_next_tag() could return -1 instead of
a tag value in some circumstances - which almost none of the callers
checked for.  Also, fdt_next_tag() could return FDT_END either because
it encountered an FDT_END tag, or because it reached the end of the
structure block - no way was provided to tell between these cases.

With this patch, fdt_next_tag() always returns FDT_END with a negative
value in nextoffset for an error.  This means the several places which
loop looking for FDT_END will still work correctly - they only need to
check for errors at the end.  The errors which fdt_next_tag() can
report are:
	- -FDT_ERR_TRUNCATED if it reached the end of the structure
	   block instead of finding a tag.

	- -FDT_BADSTRUCTURE if a bad tag was encountered, or if the
           tag data couldn't be verified with fdt_offset_ptr().

This patch also updates the callers of fdt_next_tag(), where
appropriate, to make use of the new error reporting.

Finally, the prototype for the long gone _fdt_next_tag() is removed
from libfdt_internal.h.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2009-04-01 19:29:31 -04:00
..
Makefile Fix FIT and FDT support to have CONFIG_OF_LIBFDT and CONFIG_FIT independent 2008-12-13 23:31:49 +01:00
README Big white-space cleanup. 2008-05-21 00:14:08 +02:00
fdt.c libfdt: Rework/cleanup fdt_next_tag() 2009-04-01 19:29:31 -04:00
fdt_ro.c libfdt: Rework/cleanup fdt_next_tag() 2009-04-01 19:29:31 -04:00
fdt_rw.c libfdt: Rework/cleanup fdt_next_tag() 2009-04-01 19:29:31 -04:00
fdt_strerror.c libfdt: Increase namespace-pollution paranoia 2008-08-24 22:20:49 -04:00
fdt_sw.c libfdt: Rework/cleanup fdt_next_tag() 2009-04-01 19:29:31 -04:00
fdt_wip.c libfdt: Rework fdt_next_node() 2009-04-01 19:29:22 -04:00
libfdt_internal.h libfdt: Rework/cleanup fdt_next_tag() 2009-04-01 19:29:31 -04:00

README

The libfdt functionality was written by David Gibson.  The original
source came from the git repository:

URL:		git://ozlabs.org/home/dgibson/git/libfdt.git

author		David Gibson <dgibson@sneetch.(none)>
		Fri, 23 Mar 2007 04:16:54 +0000 (15:16 +1100)
committer	David Gibson <dgibson@sneetch.(none)>
		Fri, 23 Mar 2007 04:16:54 +0000 (15:16 +1100)
commit		857f54e79f74429af20c2b5ecc00ee98af6a3b8b
tree		2f648f0f88225a51ded452968d28b4402df8ade0
parent		07a12a08005f3b5cd9337900a6551e450c07b515

To adapt for u-boot usage, only the applicable files were copied and
imported into the u-boot git repository.
Omitted:
* GPL - u-boot comes with a copy of the GPL license
* test subdirectory - not directly useful for u-boot

After importing, other customizations were performed.  See the git log
for details.

Jerry Van Baren