From: Mike Beaton <mjsbeaton@gmail.com>
To: linux-efi@vger.kernel.org
Subject: Broken section alignment in 6.7 and 6.8rc EFI stub
Date: Mon, 5 Feb 2024 00:08:00 +0000 [thread overview]
Message-ID: <CAHzAAWQ6srV6LVNdmfbJhOwhBw5ZzxxZZ07aHt9oKkfYAdvuQQ@mail.gmail.com> (raw)
Good evening.
Linux kernels from 6.7 upwards (including 6.8rc) appear to have broken
PE section alignment in their EFI stub.
Up to 6.6, we see monotonically increasing and contiguous VMA and LMA,
as expected for a well-formed PE/COFF file.
In 6.7 and 6.8 these addresses basically jump around all over the place.
At least one loader which is believed to be enforcing strong but
reasonable rules on PE section layout refuses to load these:
https://github.com/acidanthera/bugtracker/issues/2371#issuecomment-1925801292
objdumps of some example kernels (two good, three bad) follow:
$ objdump -h vmlinuz-5.15.0-92-generic
vmlinuz-5.15.0-92-generic: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .setup 00003bc0 0000000001000200 0000000001000200 00000200 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .reloc 00000020 0000000001003dc0 0000000001003dc0 00003dc0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .compat 00000020 0000000001003de0 0000000001003de0 00003de0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .text 00b0f4c0 0000000001003e00 0000000001003e00 00003e00 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
$ objdump -h vmlinuz-6.6.11-zabbly+
vmlinuz-6.6.11-zabbly+: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .setup 00003dc0 0000000001000200 0000000001000200 00000200 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .reloc 00000020 0000000001003fc0 0000000001003fc0 00003fc0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .compat 00000020 0000000001003fe0 0000000001003fe0 00003fe0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .text 00d6e400 0000000001004000 0000000001004000 00004000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
$ objdump -h vmlinuz-6.7.3-3-liquorix-amd64
vmlinuz-6.7.3-3-liquorix-amd64: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .setup 00003000 0000000000001000 0000000000001000 00001000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .compat 00000008 0000000000c0e000 0000000000c0e000 00004000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .text 00baa000 0000000000005000 0000000000005000 00005000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .data 00001200 0000000000baf000 0000000000baf000 00baf000 2**4
CONTENTS, ALLOC, LOAD, DATA
$ objdump -h vmlinuz-6.7.3-zabbly+
vmlinuz-6.7.3-zabbly+: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .setup 00003000 0000000000001000 0000000000001000 00001000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .compat 00000008 0000000000df0000 0000000000df0000 00004000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .text 00d84000 0000000000005000 0000000000005000 00005000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .data 00001200 0000000000d89000 0000000000d89000 00d89000 2**4
CONTENTS, ALLOC, LOAD, DATA
$ objdump -h vmlinuz-6.8.0-0.rc3.225.vanilla.fc39.x86_64
vmlinuz-6.8.0-0.rc3.225.vanilla.fc39.x86_64: file format pei-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
0 .setup 00003000 0000000000001000 0000000000001000 00001000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .compat 00000008 0000000000e8b000 0000000000e8b000 00004000 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .text 00e1f000 0000000000005000 0000000000005000 00005000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .data 00001200 0000000000e24000 0000000000e24000 00e24000 2**4
CONTENTS, ALLOC, LOAD, DATA
$
next reply other threads:[~2024-02-05 0:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-05 0:08 Mike Beaton [this message]
2024-02-05 2:06 ` Broken section alignment in 6.7 and 6.8rc EFI stub Bagas Sanjaya
2024-02-05 7:36 ` Mike Beaton
2024-02-05 7:47 ` Ard Biesheuvel
2024-02-05 7:59 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAHzAAWQ6srV6LVNdmfbJhOwhBw5ZzxxZZ07aHt9oKkfYAdvuQQ@mail.gmail.com \
--to=mjsbeaton@gmail.com \
--cc=linux-efi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).