diff --git a/grub-core/loader/i386/efi/linux.c b/grub-core/loader/i386/efi/linux.c index 45b68c05a..532e4e512 100644 --- a/grub-core/loader/i386/efi/linux.c +++ b/grub-core/loader/i386/efi/linux.c @@ -29,6 +29,7 @@ #include #include #include +#include GRUB_MOD_LICENSE ("GPLv3+"); @@ -336,7 +337,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), lh.code32_start = (grub_uint32_t)(grub_addr_t) kernel_mem; } - grub_memcpy (params, &lh, 2 * 512); + /* do not overwrite below boot_params->hdr to avoid setting the sentinel byte */ + start = offsetof (struct linux_kernel_params, setup_sects); + grub_memcpy ((grub_uint8_t *)params + start, (grub_uint8_t *)&lh + start, 2 * 512 - start); params->type_of_loader = 0x21;