uboot-mediatek: fix determine the size of an uImage.FIT using 'imsz' or 'imszb'.

It must read the entire image for previous code of 'imsz' or 'imszb'.

Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
Suggested-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
Jianhui Zhao 2023-10-20 11:59:34 +08:00 committed by Daniel Golle
parent 9a47688eee
commit 3bbc1d5fba

View File

@ -70,7 +70,7 @@
{ {
--- a/boot/image-fit.c --- a/boot/image-fit.c
+++ b/boot/image-fit.c +++ b/boot/image-fit.c
@@ -2051,6 +2051,49 @@ static const char *fit_get_image_type_pr @@ -2051,6 +2051,47 @@ static const char *fit_get_image_type_pr
return "unknown"; return "unknown";
} }
@ -93,11 +93,8 @@
+ max_size = hdrsize; + max_size = hdrsize;
+ +
+ images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH); + images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
+ if (images_noffset < 0) { + if (images_noffset < 0)
+ printf("Can't find images parent node '%s' (%s)\n", + goto out;
+ FIT_IMAGES_PATH, fdt_strerror(images_noffset));
+ return 0;
+ }
+ +
+ for (ndepth = 0, + for (ndepth = 0,
+ noffset = fdt_next_node(fit, images_noffset, &ndepth); + noffset = fdt_next_node(fit, images_noffset, &ndepth);
@ -106,7 +103,7 @@
+ if (ndepth == 1) { + if (ndepth == 1) {
+ ret = fit_image_get_data_and_size(fit, noffset, &data, &data_size); + ret = fit_image_get_data_and_size(fit, noffset, &data, &data_size);
+ if (ret) + if (ret)
+ return 0; + goto out;
+ +
+ img_total = data_size + (data - fit); + img_total = data_size + (data - fit);
+ +
@ -114,6 +111,7 @@
+ } + }
+ } + }
+ +
+out:
+ return max_size; + return max_size;
+} +}
+ +