diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2016-12-20 15:58:44 +0100 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2017-01-13 18:19:45 -0700 |
commit | 46743c412de57158bde73a904511519d1fdab609 (patch) | |
tree | e41d21a4e24304611a9870294dbd716ea0ee7928 /cmd/disk.c | |
parent | 70c1e0474a9df2c4493b4e2330cc41d3132b4e90 (diff) | |
download | u-boot-imx-46743c412de57158bde73a904511519d1fdab609.zip u-boot-imx-46743c412de57158bde73a904511519d1fdab609.tar.gz u-boot-imx-46743c412de57158bde73a904511519d1fdab609.tar.bz2 |
libfdt: Correct fdt handling of overlays without fixups and base trees without symbols
The fdt_overlay_apply() function purports to support the edge cases where
an overlay has no fixups to be applied, or a base tree which has no
symbols (the latter can only work if the former is also true). However it
gets it wrong in a couple of small ways:
* In the no fixups case, it doesn't fail immediately, but will attempt
fdt_for_each_property_offset() giving -FDT_ERR_NOTFOUND as the node
offset, which will fail. Instead it should succeed immediately, since
there's nothing to do.
* In the case of no symbols, it again doesn't fail immediately. However
if there is an actual fixup it will fail with an unexpected error,
because -FDT_ERR_NOTFOUND is passed to fdt_getprop() when attempting to
look up the symbols. We should instead return -FDT_ERR_NOTFOUND
directly.
Both of these errors lead to the code returning misleading error codes in
failing cases.
[ DTC commit: 7d8ef6e1db9794f72805a0855f4f7f12fadd03d3 ]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'cmd/disk.c')
0 files changed, 0 insertions, 0 deletions