diff options
Diffstat (limited to 'sys-boot')
-rw-r--r-- | sys-boot/grub/files/grub-2.06-arm64-linux-Remove-magic-number.patch | 45 | ||||
-rw-r--r-- | sys-boot/grub/grub-2.06-r8.ebuild (renamed from sys-boot/grub/grub-2.06-r7.ebuild) | 1 |
2 files changed, 46 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 + diff --git a/sys-boot/grub/grub-2.06-r7.ebuild b/sys-boot/grub/grub-2.06-r8.ebuild index c56c06edbcba..98de90a6d4a3 100644 --- a/sys-boot/grub/grub-2.06-r7.ebuild +++ b/sys-boot/grub/grub-2.06-r8.ebuild @@ -72,6 +72,7 @@ PATCHES=( "${FILESDIR}"/grub-2.06-fs-ext2-ignore-checksum-seed.patch "${FILESDIR}"/grub-2.06-riscv.patch "${FILESDIR}"/grub-2.06-locale.patch + "${FILESDIR}"/grub-2.06-arm64-linux-Remove-magic-number.patch ) DEJAVU=dejavu-sans-ttf-2.37 |