[x86] boot: Fix EFI stub alignment
This commit is contained in:
parent
295116a6db
commit
c74e5d6fe7
|
@ -3,6 +3,7 @@ linux (4.19~rc2-1~exp2) UNRELEASED; urgency=medium
|
||||||
* [s390x] linux-image: Install compressed kernel image (fixes FTBFS)
|
* [s390x] linux-image: Install compressed kernel image (fixes FTBFS)
|
||||||
* [powerpc*] boot: Fix missing crc32poly.h when building with KERNEL_XZ
|
* [powerpc*] boot: Fix missing crc32poly.h when building with KERNEL_XZ
|
||||||
(fixes FTBFS)
|
(fixes FTBFS)
|
||||||
|
* [x86] boot: Fix EFI stub alignment
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Wed, 05 Sep 2018 02:37:19 +0100
|
-- Ben Hutchings <ben@decadent.org.uk> Wed, 05 Sep 2018 02:37:19 +0100
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
From: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
Date: Wed, 05 Sep 2018 17:28:12 +0100
|
||||||
|
Subject: x86: boot: Fix EFI stub alignment
|
||||||
|
|
||||||
|
We currently align the end of the compressed image to a multiple of
|
||||||
|
16. However the PE-COFF header included in the EFI stub says that the
|
||||||
|
file alignment is 32 bytes, and when adding an EFI signature to the
|
||||||
|
file it must first be padded to this alignment.
|
||||||
|
|
||||||
|
sbsigntool commands warn about this:
|
||||||
|
|
||||||
|
warning: file-aligned section .text extends beyond end of file
|
||||||
|
warning: checksum areas are greater than image size. Invalid section table?
|
||||||
|
|
||||||
|
Worse, pesign-at least when creating a detached signature—uses the
|
||||||
|
hash of the unpadded file, resulting in an invalid signature if
|
||||||
|
padding is required.
|
||||||
|
|
||||||
|
Avoid both these problems by increasing alignment to 32 bytes when
|
||||||
|
CONFIG_EFI_STUB is enabled.
|
||||||
|
|
||||||
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
---
|
||||||
|
--- a/arch/x86/boot/tools/build.c
|
||||||
|
+++ b/arch/x86/boot/tools/build.c
|
||||||
|
@@ -391,6 +391,13 @@ int main(int argc, char ** argv)
|
||||||
|
die("Unable to mmap '%s': %m", argv[2]);
|
||||||
|
/* Number of 16-byte paragraphs, including space for a 4-byte CRC */
|
||||||
|
sys_size = (sz + 15 + 4) / 16;
|
||||||
|
+#ifdef CONFIG_EFI_STUB
|
||||||
|
+ /*
|
||||||
|
+ * COFF requires minimum 32-byte alignment of sections, and
|
||||||
|
+ * adding a signature is problematic without that alignment.
|
||||||
|
+ */
|
||||||
|
+ sys_size = (sys_size + 1) & ~1;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* Patch the setup code with the appropriate size parameters */
|
||||||
|
buf[0x1f1] = setup_sectors-1;
|
|
@ -76,6 +76,7 @@ bugfix/powerpc/powerpc-lib-sstep-fix-building-for-powerpcspe.patch
|
||||||
bugfix/powerpc/powerpc-lib-makefile-don-t-pull-in-quad.o-for-32-bit.patch
|
bugfix/powerpc/powerpc-lib-makefile-don-t-pull-in-quad.o-for-32-bit.patch
|
||||||
bugfix/arm/arm-mm-export-__sync_icache_dcache-for-xen-privcmd.patch
|
bugfix/arm/arm-mm-export-__sync_icache_dcache-for-xen-privcmd.patch
|
||||||
bugfix/powerpc/powerpc-boot-fix-missing-crc32poly.h-when-building-with-kernel_xz.patch
|
bugfix/powerpc/powerpc-boot-fix-missing-crc32poly.h-when-building-with-kernel_xz.patch
|
||||||
|
bugfix/x86/x86-boot-fix-efi-stub-alignment.patch
|
||||||
|
|
||||||
# Arch features
|
# Arch features
|
||||||
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
|
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
|
||||||
|
|
Loading…
Reference in New Issue