From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev, stable@vger.kernel.org
Cc: FUJITA Tomonori <fujita.tomonori@gmail.com>,
Jarkko Sakkinen <jarkko@kernel.org>,
Miguel Ojeda <ojeda@kernel.org>, Sasha Levin <sashal@kernel.org>,
alex.gaynor@gmail.com, lossin@kernel.org, aliceryhl@google.com,
gary@garyguo.net, dakr@kernel.org, boqun.feng@gmail.com,
walmeida@microsoft.com, igor.korotin.linux@gmail.com,
anisse@astier.eu, rust-for-linux@vger.kernel.org
Subject: [PATCH AUTOSEL 6.14 03/10] rust: module: place cleanup_module() in .exit.text section
Date: Sun, 8 Jun 2025 08:54:40 -0400 [thread overview]
Message-ID: <20250608125447.933686-3-sashal@kernel.org> (raw)
In-Reply-To: <20250608125447.933686-1-sashal@kernel.org>
From: FUJITA Tomonori <fujita.tomonori@gmail.com>
[ Upstream commit 249c3a0e53acefc2b06d3b3e1fc28fb2081f878d ]
Place cleanup_module() in .exit.text section. Currently,
cleanup_module() is likely placed in the .text section. It's
inconsistent with the layout of C modules, where cleanup_module() is
placed in .exit.text.
[ Boqun asked for an example of how the section changed to be
put in the log. Tomonori provided the following examples:
C module:
$ objdump -t ~/build/x86/drivers/block/loop.o|grep clean
0000000000000000 l O .exit.data 0000000000000008 __UNIQUE_ID___addressable_cleanup_module412
0000000000000000 g F .exit.text 000000000000009c cleanup_module
Rust module without this patch:
$ objdump -t ~/build/x86/samples/rust/rust_minimal.o|grep clean
00000000000002b0 g F .text 00000000000000c6 cleanup_module
0000000000000000 g O .exit.data 0000000000000008 _R...___UNIQUE_ID___addressable_cleanup_module
Rust module with this patch:
$ objdump -t ~/build/x86/samples/rust/rust_minimal.o|grep clean
0000000000000000 g F .exit.text 00000000000000c6 cleanup_module
0000000000000000 g O .exit.data 0000000000000008 _R...___UNIQUE_ID___addressable_cleanup_module
- Miguel ]
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Acked-by: Jarkko Sakkinen <jarkko@kernel.org>
Link: https://lore.kernel.org/r/20250308044506.14458-1-fujita.tomonori@gmail.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
**YES**
This commit should be backported to stable kernel trees.
**Analysis:**
This commit adds a single line `#[link_section = ".exit.text"]` to the
`cleanup_module()` function in `rust/macros/module.rs`, making Rust
modules consistent with C modules by placing cleanup code in the
`.exit.text` section instead of the default `.text` section.
**Key factors supporting backporting:**
1. **Consistency fix**: The commit aligns Rust module behavior with
established C module conventions. From examining
`/home/sasha/linux/include/linux/init.h:56`, C modules use `#define
__exit __section(".exit.text")` to place cleanup functions in
`.exit.text`.
2. **Minimal and contained**: This is an extremely small change - adding
just one line to specify the link section. The risk of regression is
essentially zero.
3. **Follows established pattern**: This commit mirrors Similar Commit
#1 which was marked "YES" for backporting. That commit placed
`init_module()` in `.init.text` for consistency with C modules, and
this commit does the same for `cleanup_module()` with `.exit.text`.
4. **Correctness improvement**: The current code places
`cleanup_module()` in `.text` while the corresponding C code uses
`.exit.text`. This inconsistency could affect tools that rely on
standard kernel module section layouts.
5. **Low risk, clear benefit**: The change has no functional impact on
module operation but improves kernel consistency and correctness. The
commit message includes clear examples showing the section placement
before and after the fix.
The commit follows the stable tree criteria of being an important
correctness fix with minimal risk, similar to the approved Similar
Commit #1 that addressed the same inconsistency for `init_module()`.
rust/macros/module.rs | 1 +
1 file changed, 1 insertion(+)
diff --git a/rust/macros/module.rs b/rust/macros/module.rs
index 3f462e71ff0ef..59739f625ce69 100644
--- a/rust/macros/module.rs
+++ b/rust/macros/module.rs
@@ -266,6 +266,7 @@ mod __module_init {{
#[cfg(MODULE)]
#[doc(hidden)]
#[no_mangle]
+ #[link_section = \".exit.text\"]
pub extern \"C\" fn cleanup_module() {{
// SAFETY:
// - This function is inaccessible to the outside due to the double
--
2.39.5
next parent reply other threads:[~2025-06-08 12:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20250608125447.933686-1-sashal@kernel.org>
2025-06-08 12:54 ` Sasha Levin [this message]
2025-06-08 16:58 ` [PATCH AUTOSEL 6.14 03/10] rust: module: place cleanup_module() in .exit.text section Miguel Ojeda
2025-06-08 12:54 ` [PATCH AUTOSEL 6.14 04/10] rust: arm: fix unknown (to Clang) argument '-mno-fdpic' Sasha Levin
2025-06-08 16:25 ` Miguel Ojeda
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=20250608125447.933686-3-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=anisse@astier.eu \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=fujita.tomonori@gmail.com \
--cc=gary@garyguo.net \
--cc=igor.korotin.linux@gmail.com \
--cc=jarkko@kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=patches@lists.linux.dev \
--cc=rust-for-linux@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=walmeida@microsoft.com \
/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 NNTP newsgroup(s).