diff options
author | Daniel Cashman <[email protected]> | 2016-01-14 15:20:01 -0800 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2016-01-14 16:00:49 -0800 |
commit | 8f0d3aa9de57662fe35d8bacfbd9d7ef85ffe98f (patch) | |
tree | b85dde9d7e2eafded204424ac1af32d44f126700 /arch/arm64/mm/mmap.c | |
parent | e0c25d958f78acfd5c97df5776eeba3e0684101b (diff) |
arm64: mm: support ARCH_MMAP_RND_BITS
arm64: arch_mmap_rnd() uses STACK_RND_MASK to generate the random offset
for the mmap base address. This value represents a compromise between
increased ASLR effectiveness and avoiding address-space fragmentation.
Replace it with a Kconfig option, which is sensibly bounded, so that
platform developers may choose where to place this compromise. Keep
default values as new minimums.
Signed-off-by: Daniel Cashman <[email protected]>
Cc: Russell King <[email protected]>
Acked-by: Kees Cook <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jonathan Corbet <[email protected]>
Cc: Don Zickus <[email protected]>
Cc: Eric W. Biederman <[email protected]>
Cc: Heinrich Schuchardt <[email protected]>
Cc: Josh Poimboeuf <[email protected]>
Cc: Kirill A. Shutemov <[email protected]>
Cc: Naoya Horiguchi <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: Mark Salyzyn <[email protected]>
Cc: Jeff Vander Stoep <[email protected]>
Cc: Nick Kralevich <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Hector Marco-Gisbert <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Martin Schwidefsky <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'arch/arm64/mm/mmap.c')
-rw-r--r-- | arch/arm64/mm/mmap.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c index ed177475dd8c..4c893b5189dd 100644 --- a/arch/arm64/mm/mmap.c +++ b/arch/arm64/mm/mmap.c @@ -51,8 +51,12 @@ unsigned long arch_mmap_rnd(void) { unsigned long rnd; - rnd = (unsigned long)get_random_int() & STACK_RND_MASK; - +#ifdef CONFIG_COMPAT + if (test_thread_flag(TIF_32BIT)) + rnd = (unsigned long)get_random_int() & ((1 << mmap_rnd_compat_bits) - 1); + else +#endif + rnd = (unsigned long)get_random_int() & ((1 << mmap_rnd_bits) - 1); return rnd << PAGE_SHIFT; } |