rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] rust: sync: create the `get_mut()` function
@ 2025-01-30 18:51 Guilherme Giacomo Simoes
  2025-01-30 21:13 ` Boqun Feng
  2025-01-31  9:15 ` Alice Ryhl
  0 siblings, 2 replies; 5+ messages in thread
From: Guilherme Giacomo Simoes @ 2025-01-30 18:51 UTC (permalink / raw)
  To: peterz, mingo, will, boqun.feng, longman, ojeda, alex.gaynor,
	gary, bjorn3_gh, benno.lossin, a.hindborg, aliceryhl, tmgross
  Cc: Guilherme Giacomo Simoes, linux-kernel, rust-for-linux

Create a `get_mut()` function that receive a mutable instance of Lock,
and return a mutable reference to data because if the instance is
mutable, the rust compiler guarantee the access control.

Suggested-by: Björn Roy Baron <bjorn3_gh@protonmail.com>
Signed-off-by: Guilherme Giacomo Simoes <trintaeoitogc@gmail.com>
---
 rust/kernel/sync/lock.rs | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/rust/kernel/sync/lock.rs b/rust/kernel/sync/lock.rs
index eb80048e0110..3f9d78bcb37c 100644
--- a/rust/kernel/sync/lock.rs
+++ b/rust/kernel/sync/lock.rs
@@ -140,6 +140,12 @@ pub fn new(t: T, name: &'static CStr, key: &'static LockClassKey) -> impl PinIni
             }),
         })
     }
+
+    /// Get a mutable reference to data
+    pub fn get_mut(&mut self) -> &mut T {
+        // SAFETY: the caller must guarantee that the instance is only used in one place
+        unsafe { &mut *self.data.get() }
+    }
 }
 
 impl<B: Backend> Lock<(), B> {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-01-31 16:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-30 18:51 [PATCH] rust: sync: create the `get_mut()` function Guilherme Giacomo Simoes
2025-01-30 21:13 ` Boqun Feng
2025-01-31 16:02   ` Guilherme Giacomo Simoes
2025-01-31  9:15 ` Alice Ryhl
2025-01-31 16:15   ` Guilherme Giacomo Simoes

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).