From: Adriano Cordova Date: Wed, 18 Jun 2025 15:38:14 +0000 (-0400) Subject: loader/efi/linux: Unload previous Linux kernel/initrd before updating kernel size X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=de80acf3684d8440937a5beb6270579f6893fee4;p=thirdparty%2Fgrub.git loader/efi/linux: Unload previous Linux kernel/initrd before updating kernel size Unload previous Linux kernel/initrd before updating the global variable kernel_size. Otherwise the previous Linux kernel gets deallocated with the kernel_size of the Linux kernel that is being currently loaded. Signed-off-by: Adriano Cordova Reviewed-by: Daniel Kiper --- diff --git a/grub-core/loader/efi/linux.c b/grub-core/loader/efi/linux.c index 7ca80635c..36dea2931 100644 --- a/grub-core/loader/efi/linux.c +++ b/grub-core/loader/efi/linux.c @@ -492,6 +492,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), if (!file) goto fail; + grub_loader_unset(); + kernel_size = grub_file_size (file); if (grub_arch_efi_linux_load_image_header (file, &lh) != GRUB_ERR_NONE) @@ -514,8 +516,6 @@ fallback: } #endif - grub_loader_unset(); - grub_dprintf ("linux", "kernel file size: %lld\n", (long long) kernel_size); kernel_addr = grub_efi_allocate_any_pages (GRUB_EFI_BYTES_TO_PAGES (kernel_size)); grub_dprintf ("linux", "kernel numpages: %lld\n",