[U-Boot] [PATCH v4 03/20] SPL: FIT: improve error handling
Kever Yang
kever.yang at rock-chips.com
Tue May 16 01:36:13 UTC 2017
On 04/26/2017 08:32 AM, Andre Przywara 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 at arm.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
Tested-by: Kever Yang <kever.yang at rock-chips.com>
Thanks,
- Kever
> ---
> common/spl/spl_fit.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
> index 85af980..ecd42d8 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);
> }
>
> @@ -222,7 +225,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 -ENOENT;
> data_size = fdt_getprop_u32(fit, node, "data-size");
> + if (data_size == FDT_ERROR)
> + return -ENOENT;
> load = fdt_getprop_u32(fit, node, "load");
> debug("data_offset=%x, data_size=%x\n", data_offset, data_size);
> spl_image->load_addr = load;
> @@ -265,6 +272,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 -ENOENT;
> + }
>
> /*
> * Read the device tree and place it after the image. There may be
More information about the U-Boot
mailing list