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 <[email protected]>
---
Changes since v1:
- improved commit message
Changes since v2:
- return size only for EFI_SUCCESS.
Changes since v3:
- use else instead of checking again status.
---
grub-core/loader/efi/linux.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/grub-core/loader/efi/linux.c b/grub-core/loader/efi/linux.c
index 2c7c874f2..4f5589862 100644
--- a/grub-core/loader/efi/linux.c
+++ b/grub-core/loader/efi/linux.c
@@ -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;
--
2.43.0
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel