]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/mm: Add support for runtime configuration of ASLR limits
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Apr 2017 14:36:20 +0000 (00:36 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 21 Apr 2017 12:57:55 +0000 (22:57 +1000)
commitc797e9864cf84eedf6eb8efd41935834dc2e0f6d
treebc93c2a5e88ec95d879ce5faee9c1eae2178c51f
parent9b85238a57eab9265ce045f5d194f28829a36ba8
powerpc/mm: Add support for runtime configuration of ASLR limits

Add powerpc support for mmap_rnd_bits and mmap_rnd_compat_bits, which are two
sysctls that allow a user to configure the number of bits of randomness used for
ASLR.

Because of the way the Kconfig for ARCH_MMAP_RND_BITS is defined, we have to
construct at least the MIN value in Kconfig, vs in a header which would be more
natural. Given that we just go ahead and do it all in Kconfig.

At least according to the code (the documentation makes no mention of it), the
value is defined as the number of bits of randomisation *of the page*, not the
address. This makes some sense, with larger page sizes more of the low bits are
forced to zero, which would reduce the randomisation if we didn't take the
PAGE_SIZE into account. However it does mean the min/max values have to change
depending on the PAGE_SIZE in order to actually limit the amount of address
space consumed by the randomisation.

The result of that is that we have to define the default values based on both
32-bit vs 64-bit, but also the configured PAGE_SIZE. Furthermore now that we
have 128TB address space support on Book3S, we also have to take that into
account.

Finally we can wire up the value in arch_mmap_rnd().

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Bhupesh Sharma <bhsharma@redhat.com>
Tested-by: Bhupesh Sharma <bhsharma@redhat.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
arch/powerpc/Kconfig
arch/powerpc/mm/mmap.c