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 <sergii.dmytruk@3mdeb.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Sergii Dmytruk 2024-11-02 00:54:40 +02:00 committed by Daniel Kiper
parent 4dc6166571
commit 13f005ed83

View File

@ -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)