diff options
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r-- | arch/x86/kernel/setup.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 0a2421cca01f..98dc9317286e 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -122,6 +122,8 @@ | |||
122 | unsigned long max_low_pfn_mapped; | 122 | unsigned long max_low_pfn_mapped; |
123 | unsigned long max_pfn_mapped; | 123 | unsigned long max_pfn_mapped; |
124 | 124 | ||
125 | bool __read_mostly kaslr_enabled = false; | ||
126 | |||
125 | #ifdef CONFIG_DMI | 127 | #ifdef CONFIG_DMI |
126 | RESERVE_BRK(dmi_alloc, 65536); | 128 | RESERVE_BRK(dmi_alloc, 65536); |
127 | #endif | 129 | #endif |
@@ -425,6 +427,11 @@ static void __init reserve_initrd(void) | |||
425 | } | 427 | } |
426 | #endif /* CONFIG_BLK_DEV_INITRD */ | 428 | #endif /* CONFIG_BLK_DEV_INITRD */ |
427 | 429 | ||
430 | static void __init parse_kaslr_setup(u64 pa_data, u32 data_len) | ||
431 | { | ||
432 | kaslr_enabled = (bool)(pa_data + sizeof(struct setup_data)); | ||
433 | } | ||
434 | |||
428 | static void __init parse_setup_data(void) | 435 | static void __init parse_setup_data(void) |
429 | { | 436 | { |
430 | struct setup_data *data; | 437 | struct setup_data *data; |
@@ -450,6 +457,9 @@ static void __init parse_setup_data(void) | |||
450 | case SETUP_EFI: | 457 | case SETUP_EFI: |
451 | parse_efi_setup(pa_data, data_len); | 458 | parse_efi_setup(pa_data, data_len); |
452 | break; | 459 | break; |
460 | case SETUP_KASLR: | ||
461 | parse_kaslr_setup(pa_data, data_len); | ||
462 | break; | ||
453 | default: | 463 | default: |
454 | break; | 464 | break; |
455 | } | 465 | } |
@@ -832,10 +842,14 @@ static void __init trim_low_memory_range(void) | |||
832 | static int | 842 | static int |
833 | dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) | 843 | dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) |
834 | { | 844 | { |
835 | pr_emerg("Kernel Offset: 0x%lx from 0x%lx " | 845 | if (kaslr_enabled) |
836 | "(relocation range: 0x%lx-0x%lx)\n", | 846 | pr_emerg("Kernel Offset: 0x%lx from 0x%lx (relocation range: 0x%lx-0x%lx)\n", |
837 | (unsigned long)&_text - __START_KERNEL, __START_KERNEL, | 847 | (unsigned long)&_text - __START_KERNEL, |
838 | __START_KERNEL_map, MODULES_VADDR-1); | 848 | __START_KERNEL, |
849 | __START_KERNEL_map, | ||
850 | MODULES_VADDR-1); | ||
851 | else | ||
852 | pr_emerg("Kernel Offset: disabled\n"); | ||
839 | 853 | ||
840 | return 0; | 854 | return 0; |
841 | } | 855 | } |