
Hi Andre,
On 31 March 2017 at 16:31, Andre Przywara andre.przywara@arm.com wrote:
At the moment we ignore any errors due to missing FIT properties, instead go ahead and calculate our addresses with the -1 return value. Fix this and bail out if any of the mandatory properties are missing.
Signed-off-by: Andre Przywara andre.przywara@arm.com
common/spl/spl_fit.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
nit below
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index a4ac27b..55da37a 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -11,14 +11,17 @@ #include <libfdt.h> #include <spl.h>
+#define FDT_ERROR ((ulong)(-1))
static ulong fdt_getprop_u32(const void *fdt, int node, const char *prop) { const u32 *cell; int len;
cell = fdt_getprop(fdt, node, prop, &len);
if (len != sizeof(*cell))
return -1U;
if (!cell || len != sizeof(*cell))
return FDT_ERROR;
return fdt32_to_cpu(*cell);
}
@@ -221,7 +224,11 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
/* Get its information and set up the spl_image structure */ data_offset = fdt_getprop_u32(fit, node, "data-offset");
if (data_offset == FDT_ERROR)
return -1; data_size = fdt_getprop_u32(fit, node, "data-size");
if (data_size == FDT_ERROR)
return -1;
Can you return a proper error number - this is -EPERM which doesn't seem right.
load = fdt_getprop_u32(fit, node, "load"); debug("data_offset=%x, data_size=%x\n", data_offset, data_size); spl_image->load_addr = load;
@@ -264,6 +271,10 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, } fdt_offset = fdt_getprop_u32(fit, node, "data-offset"); fdt_len = fdt_getprop_u32(fit, node, "data-size");
if (fdt_offset == FDT_ERROR || fdt_len == FDT_ERROR) {
debug("%s: cannot load FDT data\n" __func__);
return -1;
} /* * Read the device tree and place it after the image. There may be
-- 2.8.2
Regards, Simon