Skip to content
  • Alexandre Ghiti's avatar
    riscv: make mmap allocation top-down by default · 54c95a11
    Alexandre Ghiti authored
    In order to avoid wasting user address space by using bottom-up mmap
    allocation scheme, prefer top-down scheme when possible.
    
    Before:
    root@qemuriscv64:~# cat /proc/self/maps
    00010000-00016000 r-xp 00000000 fe:00 6389       /bin/cat.coreutils
    00016000-00017000 r--p 00005000 fe:00 6389       /bin/cat.coreutils
    00017000-00018000 rw-p 00006000 fe:00 6389       /bin/cat.coreutils
    00018000-00039000 rw-p 00000000 00:00 0          [heap]
    1555556000-155556d000 r-xp 00000000 fe:00 7193   /lib/ld-2.28.so
    155556d000-155556e000 r--p 00016000 fe:00 7193   /lib/ld-2.28.so
    155556e000-155556f000 rw-p 00017000 fe:00 7193   /lib/ld-2.28.so
    155556f000-1555570000 rw-p 00000000 00:00 0
    1555570000-1555572000 r-xp 00000000 00:00 0      [vdso]
    1555574000-1555576000 rw-p 00000000 00:00 0
    1555576000-1555674000 r-xp 00000000 fe:00 7187   /lib/libc-2.28.so
    1555674000-1555678000 r--p 000fd000 fe:00 7187   /lib/libc-2.28.so
    1555678000-155567a000 rw-p 00101000 fe:00 7187   /lib/libc-2.28.so
    155567a000-15556a0000 rw-p 00000000 00:00 0
    3fffb90000-3fffbb1000 rw-p 00000000 00:00 0      [stack]
    
    After:
    root@qemuriscv64:~# cat /proc/self/maps
    00010000-00016000 r-xp 00000000 fe:00 6389       /bin/cat.coreutils
    00016000-00017000 r--p 00005000 fe:00 6389       /bin/cat.coreutils
    00017000-00018000 rw-p 00006000 fe:00 6389       /bin/cat.coreutils
    2de81000-2dea2000 rw-p 00000000 00:00 0          [heap]
    3ff7eb6000-3ff7ed8000 rw-p 00000000 00:00 0
    3ff7ed8000-3ff7fd6000 r-xp 00000000 fe:00 7187   /lib/libc-2.28.so
    3ff7fd6000-3ff7fda000 r--p 000fd000 fe:00 7187   /lib/libc-2.28.so
    3ff7fda000-3ff7fdc000 rw-p 00101000 fe:00 7187   /lib/libc-2.28.so
    3ff7fdc000-3ff7fe2000 rw-p 00000000 00:00 0
    3ff7fe4000-3ff7fe6000 r-xp 00000000 00:00 0      [vdso]
    3ff7fe6000-3ff7ffd000 r-xp 00000000 fe:00 7193   /lib/ld-2.28.so
    3ff7ffd000-3ff7ffe000 r--p 00016000 fe:00 7193   /lib/ld-2.28.so
    3ff7ffe000-3ff7fff000 rw-p 00017000 fe:00 7193   /lib/ld-2.28.so
    3ff7fff000-3ff8000000 rw-p 00000000 00:00 0
    3fff888000-3fff8a9000 rw-p 00000000 00:00 0      [stack]
    
    [alex@ghiti.fr: v6]
      Link: http://lkml.kernel.org/r/20190808061756.19712-15-alex@ghiti.fr
    Link: http://lkml.kernel.org/r/20190730055113.23635-15-alex@ghiti.fr
    
    
    Signed-off-by: default avatarAlexandre Ghiti <alex@ghiti.fr>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Reviewed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Acked-by: Paul Walmsley <paul.walmsley@sifive.com>	[arch/riscv]
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: Palmer Dabbelt <palmer@sifive.com>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    54c95a11