From 9c09c65b5736c65a5d36e832f2609cd920e549cd Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Wed, 12 Jan 2011 09:55:22 +0100 Subject: [PATCH] --- yaml --- r: 230965 b: refs/heads/master c: 9046e401e752dba784805a7818f99cc45a39cbff h: refs/heads/master i: 230963: 116af82f30ed085959aba176280e4020d89c02cc v: v3 --- [refs] | 2 +- trunk/arch/s390/include/asm/elf.h | 2 ++ trunk/arch/s390/mm/mmap.c | 11 ++++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 5511597c5a81..7efcb2067bcf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a63fa1a85d75756368d9c86fff5c1b193de991c +refs/heads/master: 9046e401e752dba784805a7818f99cc45a39cbff diff --git a/trunk/arch/s390/include/asm/elf.h b/trunk/arch/s390/include/asm/elf.h index 354d42616c7e..9dbd3e7a3bc3 100644 --- a/trunk/arch/s390/include/asm/elf.h +++ b/trunk/arch/s390/include/asm/elf.h @@ -206,6 +206,8 @@ do { \ current->mm->context.noexec == 0; \ }) +#define STACK_RND_MASK 0x7ffUL + #define ARCH_DLINFO \ do { \ if (vdso_enabled) \ diff --git a/trunk/arch/s390/mm/mmap.c b/trunk/arch/s390/mm/mmap.c index 869efbaed3ea..5578740ab9c9 100644 --- a/trunk/arch/s390/mm/mmap.c +++ b/trunk/arch/s390/mm/mmap.c @@ -30,6 +30,15 @@ #include #include +static unsigned long stack_maxrandom_size(void) +{ + if (!(current->flags & PF_RANDOMIZE)) + return 0; + if (current->personality & ADDR_NO_RANDOMIZE) + return 0; + return STACK_RND_MASK << PAGE_SHIFT; +} + /* * Top of mmap area (just below the process stack). * @@ -47,7 +56,7 @@ static inline unsigned long mmap_base(void) else if (gap > MAX_GAP) gap = MAX_GAP; - return STACK_TOP - (gap & PAGE_MASK); + return STACK_TOP - stack_maxrandom_size() - (gap & PAGE_MASK); } static inline int mmap_is_legacy(void)