powerpc+sparc64/mm: Remove hack in mmap randomize layout
authorDan McGee <dpmcgee@gmail.com>
Mon, 17 Oct 2011 13:05:23 +0000 (13:05 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 28 Nov 2011 00:42:09 +0000 (11:42 +1100)
Since commit 8a0a9bd4db63bc45e301, this comment in mmap_rnd() does not
hold true as the value returned by get_random_int() will in fact be

different every single call. Remove the comment and simplify the code
back to its original desired form.

This reverts commit a5adc91a4b44b5d1 which is no longer necessary and
also fixes the sparc code that copied this same adjustment.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/mm/mmap_64.c
arch/sparc/kernel/sys_sparc_64.c

index 5a783d8e8e8e757719f5b055cf8142d56becc1d9..67a42ed0d2fc8408c7ecb197a3c5bf58c5bee6df 100644 (file)
@@ -53,14 +53,6 @@ static inline int mmap_is_legacy(void)
        return sysctl_legacy_va_layout;
 }
 
-/*
- * Since get_random_int() returns the same value within a 1 jiffy window,
- * we will almost always get the same randomisation for the stack and mmap
- * region. This will mean the relative distance between stack and mmap will
- * be the same.
- *
- * To avoid this we can shift the randomness by 1 bit.
- */
 static unsigned long mmap_rnd(void)
 {
        unsigned long rnd = 0;
@@ -68,11 +60,11 @@ static unsigned long mmap_rnd(void)
        if (current->flags & PF_RANDOMIZE) {
                /* 8MB for 32bit, 1GB for 64bit */
                if (is_32bit_task())
-                       rnd = (long)(get_random_int() % (1<<(22-PAGE_SHIFT)));
+                       rnd = (long)(get_random_int() % (1<<(23-PAGE_SHIFT)));
                else
-                       rnd = (long)(get_random_int() % (1<<(29-PAGE_SHIFT)));
+                       rnd = (long)(get_random_int() % (1<<(30-PAGE_SHIFT)));
        }
-       return (rnd << PAGE_SHIFT) * 2;
+       return rnd << PAGE_SHIFT;
 }
 
 static inline unsigned long mmap_base(void)
index 441521ad8a3febfc9a91f7dbc5cdabb01690d591..232df9949530f3d95c3c95385a62d45402c6d042 100644 (file)
@@ -368,11 +368,11 @@ static unsigned long mmap_rnd(void)
        if (current->flags & PF_RANDOMIZE) {
                unsigned long val = get_random_int();
                if (test_thread_flag(TIF_32BIT))
-                       rnd = (val % (1UL << (22UL-PAGE_SHIFT)));
+                       rnd = (val % (1UL << (23UL-PAGE_SHIFT)));
                else
-                       rnd = (val % (1UL << (29UL-PAGE_SHIFT)));
+                       rnd = (val % (1UL << (30UL-PAGE_SHIFT)));
        }
-       return (rnd << PAGE_SHIFT) * 2;
+       return rnd << PAGE_SHIFT;
 }
 
 void arch_pick_mmap_layout(struct mm_struct *mm)