From de80acf3684d8440937a5beb6270579f6893fee4 Mon Sep 17 00:00:00 2001 From: Adriano Cordova Date: Wed, 18 Jun 2025 11:38:14 -0400 Subject: [PATCH] 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 --- grub-core/loader/efi/linux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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", -- 2.47.2