|
@@ -225,19 +225,17 @@ static unsigned long mmap_rnd(void)
|
|
{
|
|
{
|
|
unsigned long rnd = 0;
|
|
unsigned long rnd = 0;
|
|
|
|
|
|
- /*
|
|
|
|
- * 8 bits of randomness in 32bit mmaps, 20 address space bits
|
|
|
|
- * 28 bits of randomness in 64bit mmaps, 40 address space bits
|
|
|
|
- */
|
|
|
|
- if (current->flags & PF_RANDOMIZE) {
|
|
|
|
- if (is_32bit_task())
|
|
|
|
- rnd = get_random_int() % (1<<8);
|
|
|
|
- else
|
|
|
|
- rnd = get_random_int() % (1<<28);
|
|
|
|
- }
|
|
|
|
|
|
+ if (current->flags & PF_RANDOMIZE)
|
|
|
|
+ rnd = get_random_int() & MMAP_RND_MASK;
|
|
|
|
+
|
|
return rnd << PAGE_SHIFT;
|
|
return rnd << PAGE_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+unsigned long arch_mmap_rnd(void)
|
|
|
|
+{
|
|
|
|
+ return (get_random_int() & MMAP_RND_MASK) << PAGE_SHIFT;
|
|
|
|
+}
|
|
|
|
+
|
|
static unsigned long mmap_legacy_base(void)
|
|
static unsigned long mmap_legacy_base(void)
|
|
{
|
|
{
|
|
return TASK_UNMAPPED_BASE + mmap_rnd();
|
|
return TASK_UNMAPPED_BASE + mmap_rnd();
|