libfdt: Add support for disabling internal checks
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@chromium.org> Suggested-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20200302190255.51426-3-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
parent
28fd7590aa
commit
e5cc26b68b
|
@ -402,7 +402,7 @@ static const struct fdt_property *fdt_get_property_namelen_(const void *fdt,
|
||||||
const struct fdt_property *prop;
|
const struct fdt_property *prop;
|
||||||
|
|
||||||
prop = fdt_get_property_by_offset_(fdt, offset, lenp);
|
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;
|
offset = -FDT_ERR_INTERNAL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -634,7 +634,7 @@ int fdt_node_depth(const void *fdt, int nodeoffset)
|
||||||
|
|
||||||
err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
|
err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth);
|
||||||
if (err)
|
if (err)
|
||||||
return (can_assume(VALID_INPUT) || err < 0) ? err :
|
return (can_assume(LIBFDT_FLAWLESS) || err < 0) ? err :
|
||||||
-FDT_ERR_INTERNAL;
|
-FDT_ERR_INTERNAL;
|
||||||
return nodedepth;
|
return nodedepth;
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,6 +145,15 @@ enum {
|
||||||
* device tree is correctly ordered. See fdt_blocks_misordered_().
|
* device tree is correctly ordered. See fdt_blocks_misordered_().
|
||||||
*/
|
*/
|
||||||
ASSUME_LIBFDT_ORDER = 1 << 4,
|
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,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue