diff options
| author | Ingo Molnar <mingo@kernel.org> | 2015-01-28 09:30:32 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2015-01-28 09:30:32 -0500 |
| commit | 41ca5d4e9be11ea6ae040b51d9628a189fd82896 (patch) | |
| tree | f9c35cc37b9622f6cccd91b94548f44b9a534029 /arch/x86/boot/compressed/misc.c | |
| parent | 0fcedc8631ec28ca25d3c0b116e8fa0c19dd5f6d (diff) | |
| parent | 3669ef9fa7d35f573ec9c0e0341b29251c2734a7 (diff) | |
Merge commit 3669ef9fa7d3 ("x86, tls: Interpret an all-zero struct user_desc as 'no segment'") into x86/asm
Pick up the latestest asm fixes before advancing it any further.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/boot/compressed/misc.c')
| -rw-r--r-- | arch/x86/boot/compressed/misc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index dcc1c536cc21..a950864a64da 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c | |||
| @@ -373,6 +373,8 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, | |||
| 373 | unsigned long output_len, | 373 | unsigned long output_len, |
| 374 | unsigned long run_size) | 374 | unsigned long run_size) |
| 375 | { | 375 | { |
| 376 | unsigned char *output_orig = output; | ||
| 377 | |||
| 376 | real_mode = rmode; | 378 | real_mode = rmode; |
| 377 | 379 | ||
| 378 | sanitize_boot_params(real_mode); | 380 | sanitize_boot_params(real_mode); |
| @@ -421,7 +423,12 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap, | |||
| 421 | debug_putstr("\nDecompressing Linux... "); | 423 | debug_putstr("\nDecompressing Linux... "); |
| 422 | decompress(input_data, input_len, NULL, NULL, output, NULL, error); | 424 | decompress(input_data, input_len, NULL, NULL, output, NULL, error); |
| 423 | parse_elf(output); | 425 | parse_elf(output); |
| 424 | handle_relocations(output, output_len); | 426 | /* |
| 427 | * 32-bit always performs relocations. 64-bit relocations are only | ||
| 428 | * needed if kASLR has chosen a different load address. | ||
| 429 | */ | ||
| 430 | if (!IS_ENABLED(CONFIG_X86_64) || output != output_orig) | ||
| 431 | handle_relocations(output, output_len); | ||
| 425 | debug_putstr("done.\nBooting the kernel.\n"); | 432 | debug_putstr("done.\nBooting the kernel.\n"); |
| 426 | return output; | 433 | return output; |
| 427 | } | 434 | } |
