[PATCH] display_options: print_size: Fix order overflow

Pali Rohár pali at kernel.org
Mon Sep 12 20:56:32 CEST 2022


On Monday 12 September 2022 07:34:43 Simon Glass wrote:
> 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

Ok, I will look at it.


More information about the U-Boot mailing list