diff options
author | Kees Cook <keescook@chromium.org> | 2013-10-10 20:18:18 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-10-13 06:13:13 -0400 |
commit | 6145cfe394a7f138f6b64491c5663f97dba12450 (patch) | |
tree | 409c39dce2121c84fd1a96102a16e7d69c20285c /arch/x86/Kconfig | |
parent | f32360ef6608434a032dc7ad262d45e9693c27f3 (diff) |
x86, kaslr: Raise the maximum virtual address to -1 GiB on x86_64
On 64-bit, this raises the maximum location to -1 GiB (from -1.5 GiB),
the upper limit currently, since the kernel fixmap page mappings need
to be moved to use the other 1 GiB (which would be the theoretical
limit when building with -mcmodel=kernel).
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: http://lkml.kernel.org/r/1381450698-28710-7-git-send-email-keescook@chromium.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 992701d4d4f8..51f439953d23 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -1746,13 +1746,23 @@ config RANDOMIZE_BASE | |||
1746 | config RANDOMIZE_BASE_MAX_OFFSET | 1746 | config RANDOMIZE_BASE_MAX_OFFSET |
1747 | hex "Maximum ASLR offset allowed" | 1747 | hex "Maximum ASLR offset allowed" |
1748 | depends on RANDOMIZE_BASE | 1748 | depends on RANDOMIZE_BASE |
1749 | default "0x10000000" | 1749 | range 0x0 0x20000000 if X86_32 |
1750 | range 0x0 0x10000000 | 1750 | default "0x20000000" if X86_32 |
1751 | range 0x0 0x40000000 if X86_64 | ||
1752 | default "0x40000000" if X86_64 | ||
1751 | ---help--- | 1753 | ---help--- |
1752 | Determines the maximal offset in bytes that will be applied to the | 1754 | Determines the maximal offset in bytes that will be applied to the |
1753 | kernel when Address Space Layout Randomization (ASLR) is active. | 1755 | kernel when Address Space Layout Randomization (ASLR) is active. |
1754 | Must be less than or equal to the actual physical memory on the | 1756 | Must be less than or equal to the actual physical memory on the |
1755 | system. This must be a power of two. | 1757 | system. This must be a multiple of CONFIG_PHYSICAL_ALIGN. |
1758 | |||
1759 | On 32-bit this is limited to 512MiB. | ||
1760 | |||
1761 | On 64-bit this is limited by how the kernel fixmap page table is | ||
1762 | positioned, so this cannot be larger that 1GiB currently. Normally | ||
1763 | there is a 512MiB to 1.5GiB split between kernel and modules. When | ||
1764 | this is raised above the 512MiB default, the modules area will | ||
1765 | shrink to compensate, up to the current maximum 1GiB to 1GiB split. | ||
1756 | 1766 | ||
1757 | # Relocation on x86 needs some additional build support | 1767 | # Relocation on x86 needs some additional build support |
1758 | config X86_NEED_RELOCS | 1768 | config X86_NEED_RELOCS |