]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
loader/efi/linux: Return correct size from LoadFile2
authorFrediano Ziglio <frediano.ziglio@cloud.com>
Wed, 16 Jul 2025 08:06:09 +0000 (09:06 +0100)
committerDaniel Kiper <daniel.kiper@oracle.com>
Thu, 14 Aug 2025 19:21:41 +0000 (21:21 +0200)
From UEFI specifications 2.10, section 13.2.2, EFI_LOAD_FILE2_PROTOCOL.LoadFile
(see https://uefi.org/specs/UEFI/2.10/13_Protocols_Media_Access.html), for BufferSize:

  On input the size of Buffer in bytes. On output with a return code
  of EFI_SUCCESS, the amount of data transferred to Buffer. On output
  with a return code of EFI_BUFFER_TOO_SMALL, the size of Buffer
  required to retrieve the requested file.

So, set *buffer_size correctly.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/loader/efi/linux.c

index 2c7c874f22915f5de02e846027e86032776689ec..4f5589862a3c680a976467e0881b7e8876bad318 100644 (file)
@@ -372,6 +372,8 @@ grub_efi_initrd_load_file2 (grub_efi_load_file2_t *this,
 
   if (grub_initrd_load (&initrd_ctx, buffer))
     status = GRUB_EFI_DEVICE_ERROR;
+  else
+    *buffer_size = initrd_size;
 
   grub_initrd_close (&initrd_ctx);
   return status;