[U-Boot] [PATCH 01/23] image: Use ram_top, not bi_memsize, in getenv_bootm_size
Daniel Schwierzeck
daniel.schwierzeck at gmail.com
Tue Sep 27 13:03:47 CEST 2016
+cc Simon and Tom
2016-09-26 20:28 GMT+02:00 Paul Burton <paul.burton at 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.burton at 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
More information about the U-Boot
mailing list