[PATCH] display_options: print_size: Fix order overflow

Simon Glass sjg at chromium.org
Mon Sep 12 15:34:43 CEST 2022


Hi Pali,

On Sun, 11 Sept 2022 at 03:38, Pali Rohár <pali at kernel.org> wrote:
>
> Function print_size() round size to the nearst value with one decimal
> fraction number. But in special cases also unit order may overflow.
>
> For example value 1073689396 is printed as "1024 MiB" and value 1073741824
> as "1 GiB".
>
> Fix this issue by detecting order overflow and increasing unit order.
> With this change also value 1073689396 is printed as "1 GiB".
>
> Signed-off-by: Pali Rohár <pali at kernel.org>
> ---
>  lib/display_options.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/lib/display_options.c b/lib/display_options.c
> index 360b01bcf5ff..c281c1d2c10d 100644
> --- a/lib/display_options.c
> +++ b/lib/display_options.c
> @@ -126,6 +126,12 @@ void print_size(uint64_t size, const char *s)
>                 if (m >= 10) {
>                         m -= 10;
>                         n += 1;
> +
> +                       if (n == 1024 && i > 0) {
> +                               n = 1;
> +                               m = 0;
> +                               c = names[i - 1];
> +                       }
>                 }
>         }
>
> --
> 2.20.1
>

Please add a test case for this to test/lib/test_print.c

Regards,
Simon


More information about the U-Boot mailing list