mirror of https://github.com/torvalds/linux.git
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 |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| Makefile | ||
| acpi.c | ||
| cmdline.c | ||
| cpuflags.c | ||
| early_serial_console.c | ||
| efi.c | ||
| efi.h | ||
| efi_mixed.S | ||
| error.c | ||
| error.h | ||
| head_32.S | ||
| head_64.S | ||
| ident_map_64.c | ||
| idt_64.c | ||
| idt_handlers_64.S | ||
| kaslr.c | ||
| kernel_info.S | ||
| mem.c | ||
| mem_encrypt.S | ||
| misc.c | ||
| misc.h | ||
| mkpiggy.c | ||
| pgtable.h | ||
| pgtable_64.c | ||
| sev.c | ||
| sev.h | ||
| string.c | ||
| tdcall.S | ||
| tdx-shared.c | ||
| tdx.c | ||
| tdx.h | ||
| vmlinux.lds.S | ||