|
@@ -1722,16 +1722,46 @@ config RELOCATABLE
|
|
|
|
|
|
Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
|
|
|
it has been loaded at and the compile time physical address
|
|
|
- (CONFIG_PHYSICAL_START) is ignored.
|
|
|
+ (CONFIG_PHYSICAL_START) is used as the minimum location.
|
|
|
|
|
|
-# Relocation on x86-32 needs some additional build support
|
|
|
+config RANDOMIZE_BASE
|
|
|
+ bool "Randomize the address of the kernel image"
|
|
|
+ depends on RELOCATABLE
|
|
|
+ depends on !HIBERNATION
|
|
|
+ default n
|
|
|
+ ---help---
|
|
|
+ Randomizes the physical and virtual address at which the
|
|
|
+ kernel image is decompressed, as a security feature that
|
|
|
+ deters exploit attempts relying on knowledge of the location
|
|
|
+ of kernel internals.
|
|
|
+
|
|
|
+ Entropy is generated using the RDRAND instruction if it
|
|
|
+ is supported. If not, then RDTSC is used, if supported. If
|
|
|
+ neither RDRAND nor RDTSC are supported, then no randomness
|
|
|
+ is introduced.
|
|
|
+
|
|
|
+ The kernel will be offset by up to RANDOMIZE_BASE_MAX_OFFSET,
|
|
|
+ and aligned according to PHYSICAL_ALIGN.
|
|
|
+
|
|
|
+config RANDOMIZE_BASE_MAX_OFFSET
|
|
|
+ hex "Maximum ASLR offset allowed"
|
|
|
+ depends on RANDOMIZE_BASE
|
|
|
+ default "0x10000000"
|
|
|
+ range 0x0 0x10000000
|
|
|
+ ---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 power of two.
|
|
|
+
|
|
|
+# Relocation on x86 needs some additional build support
|
|
|
config X86_NEED_RELOCS
|
|
|
def_bool y
|
|
|
- depends on X86_32 && RELOCATABLE
|
|
|
+ depends on RANDOMIZE_BASE || (X86_32 && RELOCATABLE)
|
|
|
|
|
|
config PHYSICAL_ALIGN
|
|
|
hex "Alignment value to which kernel should be aligned"
|
|
|
- default "0x1000000"
|
|
|
+ default "0x200000"
|
|
|
range 0x2000 0x1000000 if X86_32
|
|
|
range 0x200000 0x1000000 if X86_64
|
|
|
---help---
|