Skip to content

Commit

Permalink
x86, kaslr: Clarify RANDOMIZE_BASE_MAX_OFFSET
Browse files Browse the repository at this point in the history
The help text for RANDOMIZE_BASE_MAX_OFFSET was confusing. This has been
clarified, and updated to be an export-only tunable.

Signed-off-by: Kees Cook <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Acked-by: Ingo Molnar <[email protected]>
Signed-off-by: H. Peter Anvin <[email protected]>
  • Loading branch information
kees authored and H. Peter Anvin committed Jan 14, 2014
1 parent 1925994 commit da2b6fb
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1747,26 +1747,33 @@ config RANDOMIZE_BASE
possible. At best, due to page table layouts, 64-bit can use
9 bits of entropy and 32-bit uses 8 bits.

If unsure, say N.

config RANDOMIZE_BASE_MAX_OFFSET
hex "Maximum ASLR offset allowed"
hex "Maximum kASLR offset allowed" if EXPERT
depends on RANDOMIZE_BASE
range 0x0 0x20000000 if X86_32
default "0x20000000" if X86_32
range 0x0 0x40000000 if X86_64
default "0x40000000" if X86_64
---help---
Determines the maximal offset in bytes that will be applied to the
kernel when Address Space Layout Randomization (ASLR) is active.
Must be less than or equal to the actual physical memory on the
system. This must be a multiple of CONFIG_PHYSICAL_ALIGN.
The lesser of RANDOMIZE_BASE_MAX_OFFSET and available physical
memory is used to determine the maximal offset in bytes that will
be applied to the kernel when kernel Address Space Layout
Randomization (kASLR) is active. This must be a multiple of
PHYSICAL_ALIGN.

On 32-bit this is limited to 512MiB by page table layouts. The
default is 512MiB.

On 32-bit this is limited to 512MiB.
On 64-bit this is limited by how the kernel fixmap page table is
positioned, so this cannot be larger than 1GiB currently. Without
RANDOMIZE_BASE, there is a 512MiB to 1.5GiB split between kernel
and modules. When RANDOMIZE_BASE_MAX_OFFSET is above 512MiB, the
modules area will shrink to compensate, up to the current maximum
1GiB to 1GiB split. The default is 1GiB.

On 64-bit this is limited by how the kernel fixmap page table is
positioned, so this cannot be larger that 1GiB currently. Normally
there is a 512MiB to 1.5GiB split between kernel and modules. When
this is raised above the 512MiB default, the modules area will
shrink to compensate, up to the current maximum 1GiB to 1GiB split.
If unsure, leave at the default value.

# Relocation on x86 needs some additional build support
config X86_NEED_RELOCS
Expand Down

0 comments on commit da2b6fb

Please sign in to comment.