Skip to content

Commit 47ac548

Browse files
oleg-nesterovKAGA-KOKO
authored andcommitted
x86: Fix norandmaps/ADDR_NO_RANDOMIZE
Documentation/admin-guide/kernel-parameters.txt says: norandmaps Don't use address space randomization. Equivalent to echo 0 > /proc/sys/kernel/randomize_va_space but it doesn't work because arch_rnd() which is used to randomize mm->mmap_base returns a random value unconditionally. And as Kirill pointed out, ADDR_NO_RANDOMIZE is broken by the same reason. Just shift the PF_RANDOMIZE check from arch_mmap_rnd() to arch_rnd(). Fixes: 1b028f7 ("x86/mm: Introduce mmap_compat_base() for 32-bit mmap()") Signed-off-by: Oleg Nesterov <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Acked-by: Kirill A. Shutemov <[email protected]> Acked-by: Cyrill Gorcunov <[email protected]> Reviewed-by: Dmitry Safonov <[email protected]> Cc: [email protected] Cc: Andy Lutomirski <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Linus Torvalds <[email protected]> Link: http://lkml.kernel.org/r/[email protected]
1 parent 8439381 commit 47ac548

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

arch/x86/mm/mmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ static int mmap_is_legacy(void)
7979

8080
static unsigned long arch_rnd(unsigned int rndbits)
8181
{
82+
if (!(current->flags & PF_RANDOMIZE))
83+
return 0;
8284
return (get_random_long() & ((1UL << rndbits) - 1)) << PAGE_SHIFT;
8385
}
8486

8587
unsigned long arch_mmap_rnd(void)
8688
{
87-
if (!(current->flags & PF_RANDOMIZE))
88-
return 0;
8989
return arch_rnd(mmap_is_ia32() ? mmap32_rnd_bits : mmap64_rnd_bits);
9090
}
9191

0 commit comments

Comments
 (0)