From: Sergii Dmytruk Date: Fri, 1 Nov 2024 22:54:40 +0000 (+0200) Subject: loader/i386/linux: Fix cleanup if kernel doesn't support 64-bit addressing X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13f005ed8308d31385ed1147c4fbd33ea870582f;p=thirdparty%2Fgrub.git loader/i386/linux: Fix cleanup if kernel doesn't support 64-bit addressing Simply returning from grub_cmd_linux() doesn't free "file" resource nor calls grub_dl_ref(my_mod). Jump to "fail" label for proper cleanup like other error checks do. Signed-off-by: Sergii Dmytruk Reviewed-by: Daniel Kiper --- diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c index b051600c8..b7c1e057e 100644 --- a/grub-core/loader/i386/linux.c +++ b/grub-core/loader/i386/linux.c @@ -838,9 +838,10 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), #ifdef GRUB_MACHINE_EFI #ifdef __x86_64__ if (grub_le_to_cpu16 (linux_params.version) < 0x0208 && - ((grub_addr_t) grub_efi_system_table >> 32) != 0) - return grub_error(GRUB_ERR_BAD_OS, - "kernel does not support 64-bit addressing"); + ((grub_addr_t) grub_efi_system_table >> 32) != 0) { + grub_errno = grub_error (GRUB_ERR_BAD_OS, "kernel does not support 64-bit addressing"); + goto fail; + } #endif if (grub_le_to_cpu16 (linux_params.version) >= 0x0208)