diff options
author | Kees Cook <keescook@chromium.org> | 2013-07-08 09:15:17 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-08-07 21:00:04 -0700 |
commit | a02150610776f66b40257624822a879311592bb2 (patch) | |
tree | a14370b350bfead0b692d2b6a4b74f426c17024d /arch/x86/Kconfig | |
parent | c095ba7224d8edc71dcef0d655911399a8bd4a3f (diff) | |
download | lwn-a02150610776f66b40257624822a879311592bb2.tar.gz lwn-a02150610776f66b40257624822a879311592bb2.zip |
x86, relocs: Move ELF relocation handling to C
Moves the relocation handling into C, after decompression. This requires
that the decompressed size is passed to the decompression routine as
well so that relocations can be found. Only kernels that need relocation
support will use the code (currently just x86_32), but this is laying
the ground work for 64-bit using it in support of KASLR.
Based on work by Neill Clift and Michael Davidson.
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: http://lkml.kernel.org/r/20130708161517.GA4832@www.outflux.net
Acked-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/Kconfig')
-rw-r--r-- | arch/x86/Kconfig | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b32ebf92b0ce..8002668d60a1 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1716,9 +1716,10 @@ config X86_NEED_RELOCS depends on X86_32 && RELOCATABLE config PHYSICAL_ALIGN - hex "Alignment value to which kernel should be aligned" if X86_32 + hex "Alignment value to which kernel should be aligned" default "0x1000000" - range 0x2000 0x1000000 + range 0x2000 0x1000000 if X86_32 + range 0x200000 0x1000000 if X86_64 ---help--- This value puts the alignment restrictions on physical address where kernel is loaded and run from. Kernel is compiled for an @@ -1736,6 +1737,9 @@ config PHYSICAL_ALIGN end result is that kernel runs from a physical address meeting above alignment restrictions. + On 32-bit this value must be a multiple of 0x2000. On 64-bit + this value must be a multiple of 0x200000. + Don't change this unless you know what you are doing. config HOTPLUG_CPU |