提交 fa8cbaaf 编写于 作者: D Dan McGee 提交者: Benjamin Herrenschmidt

powerpc+sparc64/mm: Remove hack in mmap randomize layout

Since commit 8a0a9bd4, 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 a5adc91a which is no longer necessary and
also fixes the sparc code that copied this same adjustment.
Signed-off-by: NDan McGee <dpmcgee@gmail.com>
Acked-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
上级 3ce21cdf
...@@ -53,14 +53,6 @@ static inline int mmap_is_legacy(void) ...@@ -53,14 +53,6 @@ static inline int mmap_is_legacy(void)
return sysctl_legacy_va_layout; 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) static unsigned long mmap_rnd(void)
{ {
unsigned long rnd = 0; unsigned long rnd = 0;
...@@ -68,11 +60,11 @@ static unsigned long mmap_rnd(void) ...@@ -68,11 +60,11 @@ static unsigned long mmap_rnd(void)
if (current->flags & PF_RANDOMIZE) { if (current->flags & PF_RANDOMIZE) {
/* 8MB for 32bit, 1GB for 64bit */ /* 8MB for 32bit, 1GB for 64bit */
if (is_32bit_task()) if (is_32bit_task())
rnd = (long)(get_random_int() % (1<<(22-PAGE_SHIFT))); rnd = (long)(get_random_int() % (1<<(23-PAGE_SHIFT)));
else 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) static inline unsigned long mmap_base(void)
......
...@@ -368,11 +368,11 @@ static unsigned long mmap_rnd(void) ...@@ -368,11 +368,11 @@ static unsigned long mmap_rnd(void)
if (current->flags & PF_RANDOMIZE) { if (current->flags & PF_RANDOMIZE) {
unsigned long val = get_random_int(); unsigned long val = get_random_int();
if (test_thread_flag(TIF_32BIT)) if (test_thread_flag(TIF_32BIT))
rnd = (val % (1UL << (22UL-PAGE_SHIFT))); rnd = (val % (1UL << (23UL-PAGE_SHIFT)));
else 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) void arch_pick_mmap_layout(struct mm_struct *mm)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册