Skip to content

Commit

Permalink
powerpc+sparc64/mm: Remove hack in mmap randomize layout
Browse files Browse the repository at this point in the history
Since commit 8a0a9bd, 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 a5adc91 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>
  • Loading branch information
Dan McGee authored and Benjamin Herrenschmidt committed Nov 28, 2011
1 parent 3ce21cd commit fa8cbaa
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 14 deletions.
14 changes: 3 additions & 11 deletions arch/powerpc/mm/mmap_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,26 +53,18 @@ 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;

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)
Expand Down
6 changes: 3 additions & 3 deletions arch/sparc/kernel/sys_sparc_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit fa8cbaa

Please sign in to comment.