nalika / rpms / grub2

Forked from rpms/grub2 2 years ago
Clone

Blame SOURCES/0272-loader-arm64-linux-Remove-magic-number-header-field-.patch

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