diff options
Diffstat (limited to 'arch/s390/mm/mmap.c')
-rw-r--r-- | arch/s390/mm/mmap.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 869efbaed3e..5578740ab9c 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c | |||
@@ -30,6 +30,15 @@ | |||
30 | #include <asm/pgalloc.h> | 30 | #include <asm/pgalloc.h> |
31 | #include <asm/compat.h> | 31 | #include <asm/compat.h> |
32 | 32 | ||
33 | static unsigned long stack_maxrandom_size(void) | ||
34 | { | ||
35 | if (!(current->flags & PF_RANDOMIZE)) | ||
36 | return 0; | ||
37 | if (current->personality & ADDR_NO_RANDOMIZE) | ||
38 | return 0; | ||
39 | return STACK_RND_MASK << PAGE_SHIFT; | ||
40 | } | ||
41 | |||
33 | /* | 42 | /* |
34 | * Top of mmap area (just below the process stack). | 43 | * Top of mmap area (just below the process stack). |
35 | * | 44 | * |
@@ -47,7 +56,7 @@ static inline unsigned long mmap_base(void) | |||
47 | else if (gap > MAX_GAP) | 56 | else if (gap > MAX_GAP) |
48 | gap = MAX_GAP; | 57 | gap = MAX_GAP; |
49 | 58 | ||
50 | return STACK_TOP - (gap & PAGE_MASK); | 59 | return STACK_TOP - stack_maxrandom_size() - (gap & PAGE_MASK); |
51 | } | 60 | } |
52 | 61 | ||
53 | static inline int mmap_is_legacy(void) | 62 | static inline int mmap_is_legacy(void) |