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 c4648adadd7d..0d8071d7addb 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -121,6 +121,8 @@ | |||
121 | unsigned long max_low_pfn_mapped; | 121 | unsigned long max_low_pfn_mapped; |
122 | unsigned long max_pfn_mapped; | 122 | unsigned long max_pfn_mapped; |
123 | 123 | ||
124 | bool __read_mostly kaslr_enabled = false; | ||
125 | |||
124 | #ifdef CONFIG_DMI | 126 | #ifdef CONFIG_DMI |
125 | RESERVE_BRK(dmi_alloc, 65536); | 127 | RESERVE_BRK(dmi_alloc, 65536); |
126 | #endif | 128 | #endif |
@@ -424,6 +426,11 @@ static void __init reserve_initrd(void) | |||
424 | } | 426 | } |
425 | #endif /* CONFIG_BLK_DEV_INITRD */ | 427 | #endif /* CONFIG_BLK_DEV_INITRD */ |
426 | 428 | ||
429 | static void __init parse_kaslr_setup(u64 pa_data, u32 data_len) | ||
430 | { | ||
431 | kaslr_enabled = (bool)(pa_data + sizeof(struct setup_data)); | ||
432 | } | ||
433 | |||
427 | static void __init parse_setup_data(void) | 434 | static void __init parse_setup_data(void) |
428 | { | 435 | { |
429 | struct setup_data *data; | 436 | struct setup_data *data; |
@@ -449,6 +456,9 @@ static void __init parse_setup_data(void) | |||
449 | case SETUP_EFI: | 456 | case SETUP_EFI: |
450 | parse_efi_setup(pa_data, data_len); | 457 | parse_efi_setup(pa_data, data_len); |
451 | break; | 458 | break; |
459 | case SETUP_KASLR: | ||
460 | parse_kaslr_setup(pa_data, data_len); | ||
461 | break; | ||
452 | default: | 462 | default: |
453 | break; | 463 | break; |
454 | } | 464 | } |
@@ -831,10 +841,14 @@ static void __init trim_low_memory_range(void) | |||
831 | static int | 841 | static int |
832 | dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) | 842 | dump_kernel_offset(struct notifier_block *self, unsigned long v, void *p) |
833 | { | 843 | { |
834 | pr_emerg("Kernel Offset: 0x%lx from 0x%lx " | 844 | if (kaslr_enabled) |
835 | "(relocation range: 0x%lx-0x%lx)\n", | 845 | pr_emerg("Kernel Offset: 0x%lx from 0x%lx (relocation range: 0x%lx-0x%lx)\n", |
836 | (unsigned long)&_text - __START_KERNEL, __START_KERNEL, | 846 | (unsigned long)&_text - __START_KERNEL, |
837 | __START_KERNEL_map, MODULES_VADDR-1); | 847 | __START_KERNEL, |
848 | __START_KERNEL_map, | ||
849 | MODULES_VADDR-1); | ||
850 | else | ||
851 | pr_emerg("Kernel Offset: disabled\n"); | ||
838 | 852 | ||
839 | return 0; | 853 | return 0; |
840 | } | 854 | } |