]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
display_options: Do not use %llu in print_size
authorMatwey V. Kornilov <matwey.kornilov@gmail.com>
Thu, 5 Aug 2021 21:22:58 +0000 (00:22 +0300)
committerTom Rini <trini@konsulko.com>
Sat, 21 Aug 2021 22:23:02 +0000 (18:23 -0400)
tiny-printf variant doesn't know how to handle %llu format string, but both
tiny-printf and print_size can meet in SPL when TFTP is used to obtain main
u-boot image. This is known to lead to critical boot issue at AM335x platform
when printf is catched in infinite loop.

To avoid such issues and make print_size function tiny-printf friendly, use %u
instead of %luu. Note, that the size value is guaranteed to be less than 1024
in this conditional branch, so the cast to unsigned int is safe.

Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
lib/display_options.c

index c08a87e31629157d50aa3d21110c8e8e734b39e0..4da1f5244f3958d06aac045cd6b8e2e1b3d71e0f 100644 (file)
@@ -107,7 +107,12 @@ void print_size(uint64_t size, const char *s)
        }
 
        if (!c) {
-               printf("%llu Bytes%s", size, s);
+               /*
+                * SPL tiny-printf is not capable for printing uint64_t.
+                * We have just checked that the size is small enought to fit
+                * unsigned int safely.
+                */
+               printf("%u Bytes%s", (unsigned int)size, s);
                return;
        }