Currently, there are two helpers called to determine the length of FDT blobs embedded in the U-Boot-supported images: - image_multi_getimg(.., &fdt_len) - android_image_get_second(.., &fdt_len)
The returned 'fdt_len' value must match 'fdt_totalsize(fdt_blob)'. Reduce the duplicated code by uniying the two checks. No functional change is expected except that the error message 'fdt size != image size' will appear as a more generic 'fdt size mismatch!' to cover both use-cases. Signed-off-by: Eugeniu Rosca <ero...@de.adit-jv.com> --- common/image-fdt.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/common/image-fdt.c b/common/image-fdt.c index 68bcab85baf4..250f99aaaedd 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -270,6 +270,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, #endif ulong img_addr; ulong fdt_addr; + ulong fdt_len = 0; char *fdt_blob = NULL; void *buf; #if CONFIG_IS_ENABLED(FIT) @@ -428,7 +429,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, } else if (images->legacy_hdr_valid && image_check_type(&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) { - ulong fdt_data, fdt_len; + ulong fdt_data; /* * Now check if we have a legacy multi-component image, @@ -447,11 +448,6 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, fdt_error("image is not a fdt"); goto error; } - - if (fdt_totalsize(fdt_blob) != fdt_len) { - fdt_error("fdt size != image size"); - goto error; - } } else { debug("## No Flattened Device Tree\n"); goto no_fdt; @@ -459,7 +455,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, #ifdef CONFIG_ANDROID_BOOT_IMAGE } else if (genimg_get_format(buf) == IMAGE_FORMAT_ANDROID) { struct andr_img_hdr *hdr = buf; - ulong fdt_data, fdt_len; + ulong fdt_data; if (android_image_get_second(hdr, &fdt_data, &fdt_len) != 0) goto no_fdt; @@ -468,9 +464,6 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, if (fdt_check_header(fdt_blob) != 0) goto no_fdt; - if (fdt_totalsize(fdt_blob) != fdt_len) - goto error; - debug("## Using FDT found in Android image second area\n"); #endif } else { @@ -478,6 +471,11 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, goto no_fdt; } + if (fdt_totalsize(fdt_blob) != fdt_len) { + fdt_error("fdt size mismatch!"); + goto error; + } + *of_flat_tree = fdt_blob; *of_size = fdt_totalsize(fdt_blob); debug(" of_flat_tree at 0x%08lx size 0x%08lx\n", -- 2.21.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot