From: Michael Brown Date: Wed, 30 Aug 2017 09:15:25 +0000 (+0100) Subject: [romprefix] Avoid unaligned accesses within ROM headers X-Git-Tag: v1.20.1~165 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75acb3c775544b6ecc4bfb1bba633717c8ec9394;p=thirdparty%2Fipxe.git [romprefix] Avoid unaligned accesses within ROM headers Ensure that all headers (PCI, UNDI, PnP, iPXE) are aligned to at least four bytes, so that all accesses to header fields will be correctly aligned even when reading directly from the expansion ROM BAR. Reported-by: Peter von Konigsmark Signed-off-by: Michael Brown --- diff --git a/src/arch/x86/prefix/mromprefix.S b/src/arch/x86/prefix/mromprefix.S index 568d1c006..73a869d90 100644 --- a/src/arch/x86/prefix/mromprefix.S +++ b/src/arch/x86/prefix/mromprefix.S @@ -492,6 +492,7 @@ mromheader: .word 0 .size mromheader, . - mromheader + .align 4 mpciheader: .ascii "PCIR" /* Signature */ .word pci_vendor_id /* Vendor identification */ diff --git a/src/arch/x86/prefix/romprefix.S b/src/arch/x86/prefix/romprefix.S index f4ca20677..978b07b57 100644 --- a/src/arch/x86/prefix/romprefix.S +++ b/src/arch/x86/prefix/romprefix.S @@ -88,6 +88,7 @@ checksum: .previous .ifeqs BUSTYPE, "PCIR" + .align 4 pciheader: .ascii "PCIR" /* Signature */ .word pci_vendor_id /* Vendor identification */ @@ -183,6 +184,7 @@ prodstr_pci_id: .globl undiheader .weak undiloader + .align 4 undiheader: .ascii "UNDI" /* Signature */ .byte undiheader_len /* Length of structure */ @@ -197,6 +199,7 @@ undiheader: .equ undiheader_len, . - undiheader .size undiheader, . - undiheader + .align 4 ipxeheader: .ascii "iPXE" /* Signature */ .byte ipxeheader_len /* Length of structure */