On 04/05/19 12:49 AM, Simon Goldschmidt wrote: > This function merely relocates the fdt blob, so don't let it alter > it by adding reservations that didn't exist before. > > Instead, if the memory used for the fdt blob has been reserved > before calling this function, ensure the relocated memory is > marked as reserved instead. > > Reported-by: Keerthy <[email protected]> > Reported-by: Lokesh Vutla <[email protected]> > Signed-off-by: Simon Goldschmidt <[email protected]>
Reviewed-by: Lokesh Vutla <[email protected]> Thanks and regards, Lokesh > --- > > common/fdt_support.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/common/fdt_support.c b/common/fdt_support.c > index ab08a0114f..4e7cf6ebe9 100644 > --- a/common/fdt_support.c > +++ b/common/fdt_support.c > @@ -597,6 +597,7 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize) > uint64_t addr, size; > int total, ret; > uint actualsize; > + int fdt_memrsv = 0; > > if (!blob) > return 0; > @@ -606,6 +607,7 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize) > fdt_get_mem_rsv(blob, i, &addr, &size); > if (addr == (uintptr_t)blob) { > fdt_del_mem_rsv(blob, i); > + fdt_memrsv = 1; > break; > } > } > @@ -627,10 +629,12 @@ int fdt_shrink_to_minimum(void *blob, uint extrasize) > /* Change the fdt header to reflect the correct size */ > fdt_set_totalsize(blob, actualsize); > > - /* Add the new reservation */ > - ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize); > - if (ret < 0) > - return ret; > + if (fdt_memrsv) { > + /* Add the new reservation */ > + ret = fdt_add_mem_rsv(blob, map_to_sysmem(blob), actualsize); > + if (ret < 0) > + return ret; > + } > > return actualsize; > } > _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

