summaryrefslogtreecommitdiff
path: root/sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch')
-rw-r--r--sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch b/sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch
new file mode 100644
index 000000000000..eed3bf0ca93d
--- /dev/null
+++ b/sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch
@@ -0,0 +1,45 @@
+https://git.savannah.gnu.org/cgit/grub.git/patch/?id=69edb31205602c29293a8c6e67363bba2a4a1e66
+https://bugs.gentoo.org/913935
+
+From 69edb31205602c29293a8c6e67363bba2a4a1e66 Mon Sep 17 00:00:00 2001
+From: Ard Biesheuvel <ardb@kernel.org>
+Date: Thu, 11 Aug 2022 16:51:57 +0200
+Subject: loader/arm64/linux: Remove magic number header field check
+
+The "ARM\x64" magic number in the file header identifies an image as one
+that implements the bare metal boot protocol, allowing the loader to
+simply move the file to a suitably aligned address in memory, with
+sufficient headroom for the trailing .bss segment (the required memory
+size is described in the header as well).
+
+Note of this matters for GRUB, as it only supports EFI boot. EFI does
+not care about this magic number, and nor should GRUB: this prevents us
+from booting other PE linux images, such as the generic EFI zboot
+decompressor, which is a pure PE/COFF image, and does not implement the
+bare metal boot protocol.
+
+So drop the magic number check.
+
+Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+---
+ grub-core/loader/arm64/linux.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
+index ef3e9f9..4c92e48 100644
+--- a/grub-core/loader/arm64/linux.c
++++ b/grub-core/loader/arm64/linux.c
+@@ -51,9 +51,6 @@ static grub_addr_t initrd_end;
+ grub_err_t
+ grub_arch_efi_linux_check_image (struct linux_arch_kernel_header * lh)
+ {
+- if (lh->magic != GRUB_LINUX_ARMXX_MAGIC_SIGNATURE)
+- return grub_error(GRUB_ERR_BAD_OS, "invalid magic number");
+-
+ if ((lh->code0 & 0xffff) != GRUB_PE32_MAGIC)
+ return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
+ N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled"));
+--
+cgit v1.1
+