On 01/06/2018 05:01 PM, Maximilian Riemensberger wrote: > mmap() is required by the linux kernel ABI and POSIX to return a > non-NULL address when the implementation chooses a start address for the > mapping. > > The current implementation of mmap_find_vma_reserved() can return NULL > as start address of a mapping which leads to subsequent crashes inside > the guests glibc, e.g. output of qemu-arm-static --strace executing a > test binary stx_test: > > 1879 > mmap2(NULL,8388608,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) > = 0x00000000 > 1879 write(2,0xf6fd39d0,79) stx_test: allocatestack.c:514: > allocate_stack: Assertion `mem != NULL' failed. > > This patch fixes mmap_find_vma_reserved() by skipping NULL as start > address while searching for a suitable mapping start address. > > CC: Riku Voipio <riku.voi...@iki.fi> > CC: Laurent Vivier <laur...@vivier.eu> > CC: Peter Maydell <peter.mayd...@linaro.org> > Signed-off-by: Maximilian Riemensberger <riemensber...@cadami.net> > --- > Changes since v1: > - Applied feedback from Laurent Vivier
Reviewed-by: Richard Henderson <richard.hender...@linaro.org> r~