[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240806212106.617164-1-mmaurer@google.com>
Date: Tue, 6 Aug 2024 21:20:26 +0000
From: Matthew Maurer <mmaurer@...gle.com>
To: masahiroy@...nel.org, ndesaulniers@...gle.com, ojeda@...nel.org,
gary@...yguo.net, mcgrof@...nel.org, Alex Gaynor <alex.gaynor@...il.com>,
Wedson Almeida Filho <wedsonaf@...il.com>
Cc: Matthew Maurer <mmaurer@...gle.com>, rust-for-linux@...r.kernel.org,
linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org, neal@...pa.dev,
marcan@...can.st, j@...nau.net, asahi@...ts.linux.dev,
Boqun Feng <boqun.feng@...il.com>,
"Björn Roy Baron" <bjorn3_gh@...tonmail.com>, Benno Lossin <benno.lossin@...ton.me>,
Andreas Hindborg <a.hindborg@...sung.com>, Alice Ryhl <aliceryhl@...gle.com>
Subject: [PATCH v3 00/16] Extended MODVERSIONS Support
Previously MODVERSIONS + RUST Redux [1]
This patch series is intended for use alongside the Implement
MODVERSIONS for RUST [2] series as a replacement for the symbol name
hashing approach used there to enable RUST and MODVERSIONS at the same
time.
Elsewhere, we've seen a desire for long symbol name support for LTO
symbol names [3], and the previous series came up [4] as a possible
solution rather than hashing, which some have objected [5] to.
This series adds a MODVERSIONS format which uses a section per column.
This avoids userspace tools breaking if we need to make a similar change
to the format in the future - we would do so by adding a new section,
rather than editing the struct definition. In the new format, the name
section is formatted as a concatenated sequence of NUL-terminated
strings, which allows for arbitrary length names.
Currently, this series emits both the extended format and the current
format on all modules, and prefers the extended format when checking if
present. I'm open to various other policies via Kconfig knobs, but this
seemed like a good initial default.
The refactor to MODVERSIONS is prefixed to this series as result of an
explicit request [6] by Luis in response to the original patchset.
If you are testing this patch alongside RUST by manually removing the
!MODVERSIONS restriction (this series doesn't remove it, because the
CRCs don't mean what we'd want them to yet, we need the DWARF patch for
that) and have kernel hardening enabled, you may need the CPU
Mitigations [7] series. Without it, the foo.mod.o file produced by the
C compiler will reference __x86_return_thunk, but foo.o will not.
This means that the version table will not contain a version for
__x86_return_thunk, but foo.ko will reference it, which will result
in a version check failure.
[1] https://lore.kernel.org/all/20231118025748.2778044-1-mmaurer@google.com/
[2] https://lore.kernel.org/all/20240617175818.58219-17-samitolvanen@google.com/
[3] https://lore.kernel.org/lkml/20240605032120.3179157-1-song@kernel.org/
[4] https://lore.kernel.org/lkml/ZoxbEEsK40ASi1cY@bombadil.infradead.org/
[5] https://lore.kernel.org/lkml/0b2697fd-7ab4-469f-83a6-ec9ebc701ba0@suse.com/
[6] https://lore.kernel.org/lkml/ZVZNh%2FPA5HiVRkeb@bombadil.infradead.org/
[7] https://lore.kernel.org/all/20240725183325.122827-1-ojeda@kernel.org/
Matthew Maurer (16):
module: Take const arg in validate_section_offset
module: Factor out elf_validity_ehdr
module: Factor out elf_validity_cache_sechdrs
module: Factor out elf_validity_cache_secstrings
module: Factor out elf_validity_cache_index_info
module: Factor out elf_validity_cache_index_mod
module: Factor out elf_validity_cache_index_sym
module: Factor out elf_validity_cache_index_str
module: Group section index calculations together
module: Factor out elf_validity_cache_strtab
module: Additional validation in elf_validity_cache_strtab
module: Reformat struct for code style
export_report: Rehabilitate script
modules: Support extended MODVERSIONS info
modpost: Produce extended modversion information
export_report: Use new version info format
arch/powerpc/kernel/module_64.c | 24 +-
kernel/module/internal.h | 18 +-
kernel/module/main.c | 647 ++++++++++++++++++++++++--------
kernel/module/version.c | 43 +++
scripts/export_report.pl | 17 +-
scripts/mod/modpost.c | 39 +-
6 files changed, 627 insertions(+), 161 deletions(-)
--
2.46.0.rc2.264.g509ed76dc8-goog
Powered by blists - more mailing lists