[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