+cc Simon and Tom 2016-09-26 20:28 GMT+02:00 Paul Burton <paul.bur...@imgtec.com>: > 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. > > 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 a5d19ab..30537cd 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 = gd->bd->bi_memstart; > - size = gd->bd->bi_memsize; > + size = gd->ram_top - start; > #endif > > s = getenv("bootm_low"); > -- > 2.10.0 >
I think the code in the #if branch above should updated too to keep a consistent behaviour -- - Daniel _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot