grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] loader/i386/linux.c: Fix cleanup if kernel doesn't support 64-bi


From: Sergii Dmytruk
Subject: [PATCH] loader/i386/linux.c: Fix cleanup if kernel doesn't support 64-bit addressing
Date: Sat, 2 Nov 2024 00:54:40 +0200

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>
---
 grub-core/loader/i386/linux.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index 977757f2c..26ed25427 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -838,9 +838,11 @@ 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)
-- 
2.47.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]