From: Matthew Maurer <mmaurer@google.com> To: Masahiro Yamada <masahiroy@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, Miguel Ojeda <ojeda@kernel.org>, Gary Guo <gary@garyguo.net>, Luis Chamberlain <mcgrof@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org>, Nicolas Schier <nicolas@fjasle.eu>, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-modules@vger.kernel.org, linux-kbuild@vger.kernel.org, rust-for-linux@vger.kernel.org, Laura Abbott <laura@labbott.name>, Matthew Maurer <mmaurer@google.com> Subject: [PATCH v2 0/5] MODVERSIONS + RUST Redux Date: Sat, 18 Nov 2023 02:54:41 +0000 [thread overview] Message-ID: <20231118025748.2778044-1-mmaurer@google.com> (raw) The goal of this patch series is to allow MODVERSIONS and RUST to be enabled simultaneously. The primary issue with doing this at the moment is that Rust uses some extremely long symbol names - for those unfamiliar with Rust, it may be helpful to think of some of the mangled C++ names you may have seen in binaries in the past. Previously, Gary Guo attempted to accomplish this by modifying the existing modversion format [1] to support variable-length symbol names. This was unfortunately considered to be a potential userspace break because kmod tools inspect this kernel module metadata. Masahiro Yamada suggested [2] that this could instead be done with a section per-field. This gives us the ability to be more flexible with this format in the future, as a new field or additional information will be in a new section which userspace tools will not yet attempt to read. In the previous version of this patchset, Luis Chamberlain suggested [3] I move validation out of the version checking and into the elf validity checker, and also add kernel-docs over there. I found elf_validity_cached_copy to be fairly dense and difficult to directly describe, so I refactored it into easier to explain pieces. In the process, I found a few missing checks and added those as well. See [PATCH 2/5] for more details. If this is too much, I'm more than happy to drop this patch from the series in favor of just adding the kernel-doc to the original code, but figured I'd offer it up in case the added clarity and checks were valuable. [1] https://lore.kernel.org/lkml/20230111161155.1349375-1-gary@garyguo.net/ [2] https://lore.kernel.org/lkml/CAK7LNATsuszFR7JB5ZkqVS1W=hWr9=E7bTf+MvgJ+NXT3aZNwg@mail.gmail.com/ [3] https://lore.kernel.org/lkml/ZVZNh%2FPA5HiVRkeb@bombadil.infradead.org/ Matthew Maurer (5): export_report: Rehabilitate script modules: Refactor + kdoc elf_validity_cached_copy modpost: Extended modversion support rust: Allow MODVERSIONS export_report: Use new version info format arch/powerpc/kernel/module_64.c | 25 +- init/Kconfig | 1 - kernel/module/internal.h | 18 +- kernel/module/main.c | 663 +++++++++++++++++++++++++------- kernel/module/version.c | 43 +++ scripts/export_report.pl | 17 +- scripts/mod/modpost.c | 37 +- 7 files changed, 642 insertions(+), 162 deletions(-) -- 2.43.0.rc0.421.g78406f8d94-goog
WARNING: multiple messages have this Message-ID (diff)
From: Matthew Maurer <mmaurer@google.com> To: Masahiro Yamada <masahiroy@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, Miguel Ojeda <ojeda@kernel.org>, Gary Guo <gary@garyguo.net>, Luis Chamberlain <mcgrof@kernel.org> Cc: Nicolas Schier <nicolas@fjasle.eu>, rust-for-linux@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, Matthew Maurer <mmaurer@google.com>, Nathan Chancellor <nathan@kernel.org>, Laura Abbott <laura@labbott.name>, linuxppc-dev@lists.ozlabs.org, linux-modules@vger.kernel.org Subject: [PATCH v2 0/5] MODVERSIONS + RUST Redux Date: Sat, 18 Nov 2023 02:54:41 +0000 [thread overview] Message-ID: <20231118025748.2778044-1-mmaurer@google.com> (raw) The goal of this patch series is to allow MODVERSIONS and RUST to be enabled simultaneously. The primary issue with doing this at the moment is that Rust uses some extremely long symbol names - for those unfamiliar with Rust, it may be helpful to think of some of the mangled C++ names you may have seen in binaries in the past. Previously, Gary Guo attempted to accomplish this by modifying the existing modversion format [1] to support variable-length symbol names. This was unfortunately considered to be a potential userspace break because kmod tools inspect this kernel module metadata. Masahiro Yamada suggested [2] that this could instead be done with a section per-field. This gives us the ability to be more flexible with this format in the future, as a new field or additional information will be in a new section which userspace tools will not yet attempt to read. In the previous version of this patchset, Luis Chamberlain suggested [3] I move validation out of the version checking and into the elf validity checker, and also add kernel-docs over there. I found elf_validity_cached_copy to be fairly dense and difficult to directly describe, so I refactored it into easier to explain pieces. In the process, I found a few missing checks and added those as well. See [PATCH 2/5] for more details. If this is too much, I'm more than happy to drop this patch from the series in favor of just adding the kernel-doc to the original code, but figured I'd offer it up in case the added clarity and checks were valuable. [1] https://lore.kernel.org/lkml/20230111161155.1349375-1-gary@garyguo.net/ [2] https://lore.kernel.org/lkml/CAK7LNATsuszFR7JB5ZkqVS1W=hWr9=E7bTf+MvgJ+NXT3aZNwg@mail.gmail.com/ [3] https://lore.kernel.org/lkml/ZVZNh%2FPA5HiVRkeb@bombadil.infradead.org/ Matthew Maurer (5): export_report: Rehabilitate script modules: Refactor + kdoc elf_validity_cached_copy modpost: Extended modversion support rust: Allow MODVERSIONS export_report: Use new version info format arch/powerpc/kernel/module_64.c | 25 +- init/Kconfig | 1 - kernel/module/internal.h | 18 +- kernel/module/main.c | 663 +++++++++++++++++++++++++------- kernel/module/version.c | 43 +++ scripts/export_report.pl | 17 +- scripts/mod/modpost.c | 37 +- 7 files changed, 642 insertions(+), 162 deletions(-) -- 2.43.0.rc0.421.g78406f8d94-goog
next reply other threads:[~2023-11-18 2:58 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-18 2:54 Matthew Maurer [this message] 2023-11-18 2:54 ` [PATCH v2 0/5] MODVERSIONS + RUST Redux Matthew Maurer 2023-11-18 2:54 ` [PATCH v2 1/5] export_report: Rehabilitate script Matthew Maurer 2023-11-18 2:54 ` Matthew Maurer 2023-11-18 11:35 ` Greg KH 2023-11-18 11:35 ` Greg KH 2023-11-18 2:54 ` [PATCH v2 2/5] modules: Refactor + kdoc elf_validity_cached_copy Matthew Maurer 2023-11-18 2:54 ` Matthew Maurer 2023-11-18 11:36 ` Greg KH 2023-11-18 11:36 ` Greg KH 2023-11-18 2:54 ` [PATCH v2 3/5] modpost: Extended modversion support Matthew Maurer 2023-11-18 2:54 ` Matthew Maurer 2023-11-18 13:42 ` kernel test robot 2023-11-18 13:42 ` kernel test robot 2023-11-18 2:54 ` [PATCH v2 4/5] rust: Allow MODVERSIONS Matthew Maurer 2023-11-18 2:54 ` Matthew Maurer 2023-11-18 2:54 ` [PATCH v2 5/5] export_report: Use new version info format Matthew Maurer 2023-11-18 2:54 ` Matthew Maurer 2023-11-22 15:49 ` [PATCH v2 0/5] MODVERSIONS + RUST Redux Masahiro Yamada 2023-11-22 15:49 ` Masahiro Yamada 2023-11-22 21:04 ` Matthew Maurer 2023-11-22 21:04 ` Matthew Maurer 2023-11-23 9:05 ` Greg KH 2023-11-23 9:05 ` Greg KH 2023-11-23 11:38 ` Masahiro Yamada 2023-11-23 11:38 ` Masahiro Yamada 2023-11-23 12:12 ` Greg KH 2023-11-23 12:12 ` Greg KH 2023-11-27 19:27 ` Matthew Maurer 2023-11-27 19:27 ` Matthew Maurer 2023-11-28 8:05 ` Greg KH 2023-11-28 8:05 ` Greg KH 2023-11-28 8:44 ` Greg KH 2023-11-28 8:44 ` Greg KH
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=20231118025748.2778044-1-mmaurer@google.com \ --to=mmaurer@google.com \ --cc=gary@garyguo.net \ --cc=laura@labbott.name \ --cc=linux-kbuild@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-modules@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=masahiroy@kernel.org \ --cc=mcgrof@kernel.org \ --cc=nathan@kernel.org \ --cc=ndesaulniers@google.com \ --cc=nicolas@fjasle.eu \ --cc=ojeda@kernel.org \ --cc=rust-for-linux@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.