linux/rust/kernel/sync
Onur Özkan 59cf3a5bda rust: sync: add SRCU abstraction
Add a Rust abstraction for sleepable RCU (SRCU), backed by C srcu_struct.
Provide FFI helpers and a safe wrapper with a guard-based API for read-side
critical sections.

Cleanup is handled via `PinnedDrop`. It first checks for active read-side
sections and emits a warning if any guards were leaked. In that case, it
waits in `synchronize_srcu()` rather than risking a UAF by freeing the
`srcu_struct` that is still reachable from the C side. It then uses
`srcu_barrier()` to drain pending callbacks before finally calling
`cleanup_srcu_struct()`.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Boqun Feng <boqun@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
2026-07-15 15:34:26 -07:00
..
arc rust: provide proper code documentation titles 2024-10-07 21:39:57 +02:00
atomic rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
lock rust: sync: add #[must_use] to GlobalGuard and GlobalLock::try_lock 2026-06-04 22:22:33 +02:00
arc.rs rust: sync: add UniqueArc::as_ptr 2026-06-09 04:13:21 +02:00
aref.rs rust: aref: use the "kernel vertical" imports style 2026-06-10 09:07:13 +02:00
atomic.rs rust: sync: atomic: Update documentation for fetch_add() 2026-03-08 11:06:51 +01:00
barrier.rs rust: sync: Add memory barriers 2025-09-15 09:38:34 +02:00
completion.rs rust: sync: completion: Mark inline complete_all and wait_for_completion 2026-06-09 10:28:06 +02:00
condvar.rs Rust changes for v6.19 2025-12-03 14:16:49 -08:00
lock.rs rust: sync: Inline various lock related methods 2026-01-10 10:53:46 +08:00
locked_by.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
poll.rs Scheduler updates for v6.17: 2025-07-29 17:42:52 -07:00
rcu.rs rust: sync: rcu: Mark Guard methods as inline 2025-05-16 09:00:54 -04:00
refcount.rs rust: make build_assert module the home of related macros 2026-06-10 09:07:13 +02:00
set_once.rs rust: sync: set_once: Implement Send and Sync 2026-01-09 19:01:40 +08:00
srcu.rs rust: sync: add SRCU abstraction 2026-07-15 15:34:26 -07:00