summaryrefslogtreecommitdiffstats
path: root/debian/patches/arm64_remove_magic_number_check.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/arm64_remove_magic_number_check.patch')
-rw-r--r--debian/patches/arm64_remove_magic_number_check.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/debian/patches/arm64_remove_magic_number_check.patch b/debian/patches/arm64_remove_magic_number_check.patch
new file mode 100644
index 0000000..acc0897
--- /dev/null
+++ b/debian/patches/arm64_remove_magic_number_check.patch
@@ -0,0 +1,37 @@
+commit 69edb31205602c29293a8c6e67363bba2a4a1e66
+Author: Ard Biesheuvel <ardb@kernel.org>
+Date: Thu Aug 11 16:51:57 2022 +0200
+
+ 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>
+
+diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
+index ef3e9f944..4c92e48ac 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"));