linux/arch/x86/boot/compressed
Ard Biesheuvel c00b413a96 x86/boot: Sanitize boot params before parsing command line
The 5-level paging code parses the command line to look for the 'no5lvl'
string, and does so very early, before sanitize_boot_params() has been
called and has been given the opportunity to wipe bogus data from the
fields in boot_params that are not covered by struct setup_header, and
are therefore supposed to be initialized to zero by the bootloader.

This triggers an early boot crash when using syslinux-efi to boot a
recent kernel built with CONFIG_X86_5LEVEL=y and CONFIG_EFI_STUB=n, as
the 0xff padding that now fills the unused PE/COFF header is copied into
boot_params by the bootloader, and interpreted as the top half of the
command line pointer.

Fix this by sanitizing the boot_params before use. Note that there is no
harm in calling this more than once; subsequent invocations are able to
spot that the boot_params have already been cleaned up.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: <stable@vger.kernel.org> # v6.1+
Link: https://lore.kernel.org/r/20250306155915.342465-2-ardb+git@google.com
Closes: https://lore.kernel.org/all/202503041549.35913.ulrich.gemkow@ikr.uni-stuttgart.de
2025-03-06 22:02:39 +01:00
..
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
Makefile x86/boot: Use '-std=gnu11' to fix build with GCC 15 2025-01-30 09:59:24 -08:00
acpi.c x86: Do not include <asm/bootparam.h> in several files 2024-01-30 15:17:24 +01:00
cmdline.c x86: Do not include <asm/bootparam.h> in several files 2024-01-30 15:17:24 +01:00
cpuflags.c x86/sev-es: Check required CPU features for SEV-ES 2020-09-10 21:49:25 +02:00
early_serial_console.c x86/boot: Put globals that are accessed early into the .data section 2022-04-20 20:10:54 +02:00
efi.c x86: Do not include <asm/bootparam.h> in several files 2024-01-30 15:17:24 +01:00
efi.h x86/setup: Move internal setup_data structures into setup_data.h 2024-01-30 15:17:12 +01:00
efi_mixed.S x86/efistub: Add missing boot_params for mixed mode compat entry 2024-03-26 08:45:27 +01:00
error.c x86/purgatory: Include header for warn() declaration 2023-08-03 16:37:18 +02:00
error.h x86/purgatory: Include header for warn() declaration 2023-08-03 16:37:18 +02:00
head_32.S x86/efistub: Avoid legacy decompressor when doing EFI boot 2023-08-07 21:07:43 +02:00
head_64.S x86/boot/64: Clear most of CR4 in startup_64(), except PAE, MCE and LA57 2024-04-11 15:37:17 +02:00
ident_map_64.c - Sumanth Korikkar has taught s390 to allocate hotplug-time page frames 2024-03-14 17:43:30 -07:00
idt_64.c x86/boot: Ignore NMIs during very early boot 2023-11-30 09:55:40 +01:00
idt_handlers_64.S x86/boot: Ignore NMIs during very early boot 2023-11-30 09:55:40 +01:00
kaslr.c x86/boot/compressed: Remove unused header includes from kaslr.c 2024-12-02 16:44:32 +01:00
kernel_info.S
mem.c arch/x86: Fix typos 2024-01-03 11:46:22 +01:00
mem_encrypt.S x86/boot/compressed: Only build mem_encrypt.S if AMD_MEM_ENCRYPT=y 2022-11-24 08:57:41 +01:00
misc.c x86/boot: Skip video memory access in the decompressor for SEV-ES/SNP 2024-10-28 16:54:16 +01:00
misc.h mm: rework accept memory helpers 2024-09-01 20:26:07 -07:00
mkpiggy.c x86/boot: Remove run-time relocations from head_{32,64}.S 2020-08-14 12:52:35 +02:00
pgtable.h x86/decompressor: Pass pgtable address to trampoline directly 2023-08-07 20:49:26 +02:00
pgtable_64.c x86/boot: Sanitize boot params before parsing command line 2025-03-06 22:02:39 +01:00
sev.c x86/sev: Add the Secure TSC feature for SNP guests 2025-01-09 10:21:56 +01:00
sev.h x86/sev: Add SNP-specific unaccepted memory support 2023-06-06 18:31:37 +02:00
string.c
tdcall.S x86/boot: Port I/O: Add decompression-time support for TDX 2022-04-07 08:27:52 -07:00
tdx-shared.c x86/tdx: Add unaccepted memory support 2023-06-06 18:25:57 +02:00
tdx.c x86/tdx: Remove 'struct tdx_hypercall_args' 2023-09-12 16:30:14 -07:00
tdx.h x86/tdx: Detect TDX at early kernel decompression time 2022-04-07 08:27:51 -07:00
vmlinux.lds.S x86/boot: Increase section and file alignment to 4k/512 2023-09-17 19:48:44 +02:00