diff mbox series

arm64/linux: Remove magic number header field check

Message ID 20220811145157.3237840-1-ardb@kernel.org
State New
Headers show
Series arm64/linux: Remove magic number header field check | expand

Commit Message

Ard Biesheuvel Aug. 11, 2022, 2:51 p.m. UTC
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>
---
 grub-core/loader/arm64/linux.c | 3 ---
 1 file changed, 3 deletions(-)

Comments

Daniel Kiper Aug. 19, 2022, 5:18 p.m. UTC | #1
On Thu, Aug 11, 2022 at 04:51:57PM +0200, Ard Biesheuvel wrote:
> 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>

Daniel
diff mbox series

Patch

diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
index ef3e9f9444ca..4c92e48ac91c 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"));