Re: [PATCH v2 1/3] rust: sync: Add abstraction for synchronize_rcu()
From: Pedro Falcato
Date: Tue Jun 23 2026 - 04:58:58 EST
On Mon, Jun 22, 2026 at 07:32:49PM +0200, Philipp Stanner wrote:
> synchronize_rcu() is a frequently used C function which is always safe
> to be called.
>
> Add a safe abstraction for synchronize_rcu().
>
> Signed-off-by: Philipp Stanner <phasta@xxxxxxxxxx>
> ---
> rust/kernel/sync/rcu.rs | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/rust/kernel/sync/rcu.rs b/rust/kernel/sync/rcu.rs
> index a32bef6e490b..0d438ef31766 100644
> --- a/rust/kernel/sync/rcu.rs
> +++ b/rust/kernel/sync/rcu.rs
> @@ -50,3 +50,12 @@ fn drop(&mut self) {
> pub fn read_lock() -> Guard {
> Guard::new()
> }
> +
> +/// Wait for one RCU grace period.
> +///
> +/// You typically do this to wait for everyone holding a [`Guard`].
> +#[inline]
> +pub fn synchronize_rcu() {
> + // SAFETY: `synchronize_rcu()` is always safe to be called. It just waits for a grace period.
Commething randomly here (I know as much rust as the next not-knowing-rust-guy, sadly),
but synchronize_rcu() is not always safe to be called. You cannot call it if
you have the rcu read lock, or cannot sleep for any reason. I don't know if
you can encode these in the rust type system though.
--
Pedro