diff options
| author | Fangrui Song <[email protected]> | 2023-05-12 02:25:28 +0000 |
|---|---|---|
| committer | Kees Cook <[email protected]> | 2023-05-16 21:32:00 +0000 |
| commit | 60592fb6b67c653beaa2e7acad9a9d7aa0b71dff (patch) | |
| tree | 27f14ecfcbf21dd70c09f2b27764a0c38a1eacd0 /fs/binfmt_elf.c | |
| parent | Linux 6.4-rc2 (diff) | |
| download | kernel-60592fb6b67c653beaa2e7acad9a9d7aa0b71dff.tar.gz kernel-60592fb6b67c653beaa2e7acad9a9d7aa0b71dff.zip | |
coredump, vmcore: Set p_align to 4 for PT_NOTE
Tools like readelf/llvm-readelf use p_align to parse a PT_NOTE program
header as an array of 4-byte entries or 8-byte entries. Currently, there
are workarounds[1] in place for Linux to treat p_align==0 as 4. However,
it would be more appropriate to set the correct alignment so that tools
do not have to rely on guesswork. FreeBSD coredumps set p_align to 4 as
well.
[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=82ed9683ec099d8205dc499ac84febc975235af6
[2]: https://reviews.llvm.org/D150022
Signed-off-by: Fangrui Song <[email protected]>
Signed-off-by: Kees Cook <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'fs/binfmt_elf.c')
| -rw-r--r-- | fs/binfmt_elf.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 1033fbdfdbec..44b4c42ab8e8 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1517,7 +1517,7 @@ static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset) phdr->p_filesz = sz; phdr->p_memsz = 0; phdr->p_flags = 0; - phdr->p_align = 0; + phdr->p_align = 4; } static void fill_note(struct memelfnote *note, const char *name, int type, |
