In grub_cmd_initrd(), initrd_ctx is allocated before calling
grub_relocator_alloc_chunk_align(). When that function fails,
initrd_ctx should be freed before exiting grub_cmd_initrd().

Fixes: CID 473852

Signed-off-by: Lidong Chen <lidong.c...@oracle.com>
---
 grub-core/loader/i386/linux.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
index b7c1e057e..fd0b02a8e 100644
--- a/grub-core/loader/i386/linux.c
+++ b/grub-core/loader/i386/linux.c
@@ -1128,7 +1128,10 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ 
((unused)),
                                            GRUB_RELOCATOR_PREFERENCE_HIGH,
                                            1);
     if (err)
-      return err;
+      {
+       grub_errno = err;
+       goto fail;
+      }
     initrd_mem = get_virtual_current_address (ch);
     initrd_mem_target = get_physical_target_address (ch);
   }
-- 
2.34.1


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to