aboutsummaryrefslogtreecommitdiff
path: root/rust/kernel
diff options
context:
space:
mode:
authorWedson Almeida Filho <[email protected]>2024-03-28 16:54:54 -0300
committerMiguel Ojeda <[email protected]>2024-04-23 00:38:43 +0200
commit323617f649c0966ad5e741e47e27e06d3a680d8f (patch)
tree918c667f43d02da322a2af7299474c0961b45ef2 /rust/kernel
parentdf70d04d56975f527b9c965322cf56e245909071 (diff)
rust: kernel: require `Send` for `Module` implementations
The thread that calls the module initialisation code when a module is loaded is not guaranteed [in fact, it is unlikely] to be the same one that calls the module cleanup code on module unload, therefore, `Module` implementations must be `Send` to account for them moving from one thread to another implicitly. Signed-off-by: Wedson Almeida Filho <[email protected]> Reviewed-by: Alice Ryhl <[email protected]> Reviewed-by: Benno Lossin <[email protected]> Cc: [email protected] # 6.8.x: df70d04d5697: rust: phy: implement `Send` for `Registration` Cc: [email protected] Fixes: 247b365dc8dc ("rust: add `kernel` crate") Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
Diffstat (limited to 'rust/kernel')
-rw-r--r--rust/kernel/lib.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
index be68d5e567b1..6858e2f8a3ed 100644
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@ -65,7 +65,7 @@ const __LOG_PREFIX: &[u8] = b"rust_kernel\0";
/// The top level entrypoint to implementing a kernel module.
///
/// For any teardown or cleanup operations, your type may implement [`Drop`].
-pub trait Module: Sized + Sync {
+pub trait Module: Sized + Sync + Send {
/// Called at module initialization time.
///
/// Use this method to perform whatever setup or registration your module