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 |
||
|---|---|---|
| .. | ||
| compressed | ||
| tools | ||
| .gitignore | ||
| Makefile | ||
| a20.c | ||
| apm.c | ||
| bioscall.S | ||
| bitops.h | ||
| boot.h | ||
| cmdline.c | ||
| copy.S | ||
| cpu.c | ||
| cpucheck.c | ||
| cpuflags.c | ||
| cpuflags.h | ||
| ctype.h | ||
| early_serial_console.c | ||
| edd.c | ||
| genimage.sh | ||
| header.S | ||
| install.sh | ||
| io.h | ||
| main.c | ||
| memory.c | ||
| mkcpustr.c | ||
| msr.h | ||
| mtools.conf.in | ||
| pm.c | ||
| pmjump.S | ||
| printf.c | ||
| regs.c | ||
| setup.ld | ||
| string.c | ||
| string.h | ||
| tty.c | ||
| version.c | ||
| vesa.h | ||
| video-bios.c | ||
| video-mode.c | ||
| video-vesa.c | ||
| video-vga.c | ||
| video.c | ||
| video.h | ||