ed1787d
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
ed1787d
From: Ard Biesheuvel <ardb@kernel.org>
ed1787d
Date: Thu, 11 Aug 2022 16:51:57 +0200
ed1787d
Subject: [PATCH] loader/arm64/linux: Remove magic number header field check
ed1787d
ed1787d
The "ARM\x64" magic number in the file header identifies an image as one
ed1787d
that implements the bare metal boot protocol, allowing the loader to
ed1787d
simply move the file to a suitably aligned address in memory, with
ed1787d
sufficient headroom for the trailing .bss segment (the required memory
ed1787d
size is described in the header as well).
ed1787d
ed1787d
Note of this matters for GRUB, as it only supports EFI boot. EFI does
ed1787d
not care about this magic number, and nor should GRUB: this prevents us
ed1787d
from booting other PE linux images, such as the generic EFI zboot
ed1787d
decompressor, which is a pure PE/COFF image, and does not implement the
ed1787d
bare metal boot protocol.
ed1787d
ed1787d
So drop the magic number check.
ed1787d
ed1787d
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
ed1787d
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
ed1787d
Resolves: rhbz#2125069
ed1787d
Signed-off-by: Jeremy Linton <jlinton@redhat.com>
ed1787d
(cherry-picked from commit 69edb31205602c29293a8c6e67363bba2a4a1e66)
ed1787d
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
ed1787d
---
ed1787d
 grub-core/loader/arm64/linux.c | 3 ---
ed1787d
 1 file changed, 3 deletions(-)
ed1787d
ed1787d
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
ed1787d
index de85583487..489d0c7173 100644
ed1787d
--- a/grub-core/loader/arm64/linux.c
ed1787d
+++ b/grub-core/loader/arm64/linux.c
ed1787d
@@ -55,9 +55,6 @@ static grub_addr_t initrd_end;
ed1787d
 grub_err_t
ed1787d
 grub_arch_efi_linux_check_image (struct linux_arch_kernel_header * lh)
ed1787d
 {
ed1787d
-  if (lh->magic != GRUB_LINUX_ARMXX_MAGIC_SIGNATURE)
ed1787d
-    return grub_error(GRUB_ERR_BAD_OS, "invalid magic number");
ed1787d
-
ed1787d
   if ((lh->code0 & 0xffff) != GRUB_DOS_MAGIC)
ed1787d
     return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
ed1787d
 		       N_("plain image kernel not supported - rebuild with CONFIG_(U)EFI_STUB enabled"));