[PATCH 3/4] libfdt: Add support for disabling internal checks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



If libfdt returns -FDT_ERR_INTERNAL that generally indicates a bug in the
library. Add a new assumption for these cases since it should be save to
disable these checks regardless of the input.

Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>
Suggested-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx>
---
I have left other FDT_ERR_INTERNAL sites alone for now. I see that
fdt_check_full() returns -FDT_ERR_INTERNAL which seems to be different
from what you said about this only being for libfdt bugs.

 libfdt/fdt_ro.c          | 4 ++--
 libfdt/libfdt_internal.h | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/libfdt/fdt_ro.c b/libfdt/fdt_ro.c
index 1945503..e03570a 100644
--- a/libfdt/fdt_ro.c
+++ b/libfdt/fdt_ro.c
@@ -402,7 +402,7 @@ static const struct fdt_property *fdt_get_property_namelen_(const void *fdt,
 		const struct fdt_property *prop;
 
 		prop = fdt_get_property_by_offset_(fdt, offset, lenp);
-		if (!can_assume(VALID_DTB) && !prop) {
+		if (!can_assume(LIBFDT_FLAWLESS) && !prop) {
 			offset = -FDT_ERR_INTERNAL;
 			break;
 		}
@@ -634,7 +634,7 @@ int fdt_node_depth(const void *fdt, int nodeoffset)
 
 	err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
 	if (err)
-		return (can_assume(VALID_INPUT) || err < 0) ? err :
+		return (can_assume(LIBFDT_FLAWLESS) || err < 0) ? err :
 			-FDT_ERR_INTERNAL;
 	return nodedepth;
 }
diff --git a/libfdt/libfdt_internal.h b/libfdt/libfdt_internal.h
index 7999f6a..d4e0bd4 100644
--- a/libfdt/libfdt_internal.h
+++ b/libfdt/libfdt_internal.h
@@ -145,6 +145,15 @@ enum {
 	 * device tree is correctly ordered. See fdt_blocks_misordered_().
 	 */
 	ASSUME_LIBFDT_ORDER	= 1 << 4,
+
+	/*
+	 * This assumes that libfdt itself does not have any internal bugs. It
+	 * drops certain checks that should never be needed unless libfdt has an
+	 * undiscovered bug.
+	 *
+	 * This can generally be considered safe to enable.
+	 */
+	ASSUME_LIBFDT_FLAWLESS	= 1 << 5,
 };
 
 /**
-- 
2.25.0.265.gbab2e86ba0-goog




[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux