Hi Paul, On 1 October 2016 at 08:19, Paul Burton <paul.bur...@imgtec.com> wrote: > When determining the region of memory to allow for use by bootm, using > bi_memstart & adding bi_memsize can cause problems if that leads to an > integer overflow. For example on some MIPS systems bi_memstart would be > 0xffffffff80000000 (ie. the start of the MIPS ckseg0 region) and if the > system has 2GB of memory then the addition would wrap around to 0.
What will wrap around to 0? Isn't gd->bd->bi_memsize equal to 2GB, and gd->ram_top - start the same? > > The maximum amount of memory to be used by U-Boot is already accounted > for by the ram_top field of struct global_data, so make use of that for > the calculation instead. > > Signed-off-by: Paul Burton <paul.bur...@imgtec.com> > --- > > common/image.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/common/image.c b/common/image.c > index 1581022..25e632b 100644 > --- a/common/image.c > +++ b/common/image.c > @@ -489,7 +489,7 @@ phys_size_t getenv_bootm_size(void) > size = gd->bd->bi_dram[0].size; > #else > start = (ulong)phys_to_virt(gd->bd->bi_memstart); > - size = gd->bd->bi_memsize; > + size = gd->ram_top - start; > #endif > > s = getenv("bootm_low"); > -- > 2.10.0 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot