]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
rust: regulator: implement Send and Sync for Regulator<T>
authorDaniel Almeida <daniel.almeida@collabora.com>
Tue, 29 Jul 2025 17:31:41 +0000 (14:31 -0300)
committerMark Brown <broonie@kernel.org>
Sun, 10 Aug 2025 20:09:34 +0000 (21:09 +0100)
Sending a &Regulator<T> to another thread is safe, as the regulator core
will properly handle the locking for us. Additionally, there are no
restrictions that prevents sending a Regulator<T> to another thread.

Given these two facts, implement Send and Sync.

Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com>
Link: https://patch.msgid.link/20250729-regulator-send-sync-v1-2-8bcbd546b940@collabora.com
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
rust/kernel/regulator.rs

index d56aa229e838c45258a27cea742a693dd71e8e40..704147e18bfc9c993a00f7a187105360ad1d4956 100644 (file)
@@ -398,6 +398,14 @@ impl<T: RegulatorState> Drop for Regulator<T> {
     }
 }
 
+// SAFETY: It is safe to send a `Regulator<T>` across threads. In particular, a
+// Regulator<T> can be dropped from any thread.
+unsafe impl<T: RegulatorState> Send for Regulator<T> {}
+
+// SAFETY: It is safe to send a &Regulator<T> across threads because the C side
+// handles its own locking.
+unsafe impl<T: RegulatorState> Sync for Regulator<T> {}
+
 /// A voltage.
 ///
 /// This type represents a voltage value in microvolts.