[PATCH v13 0/7] rust: add ww_mutex support

From: Onur Özkan

Date: Tue Oct 20 2026 - 11:36:50 EST


This series adds Rust abstractions for ww_mutex, including Class, Mutex,
AcquireCtx and MutexGuard. AcquireCtxBackoff and ww_transaction handle
deadlock recovery with ordinary guards. DynLockSet tracks dynamically
discovered locks and provides separate acquisition and work callbacks.

Changes in v13:
- Require static classes and remove the class lifetime parameters from
Mutex and AcquireCtx.
- Make AcquireCtx's locking methods safe. Panic on context drop if any
acquired locks remain and check for acquired-lock count overflow
before entering C.
- Tighten AcquireCtx::from_raw()'s safety contract to cover forgotten
guards.
- Return Option from try_lock().
- Split LockSet into AcquireCtxBackoff and DynLockSet in separate
patches. Add ww_transaction() for allocation-free retries with
ordinary guards.
- Start each DynLockSet transaction with a new ticket, keep it unchanged
across retries and clear pending backoff state on return.

Dropped Alice's Reviewed-by from the Mutex/AcquireCtx patch because the
locking API and safety contracts changed.

Previous version: https://lore.kernel.org/all/cover.1791799751.git.work@xxxxxxxxxxxxx

Onur Özkan (7):
rust: add C wrappers for ww_mutex inline functions
ww_mutex: add ww_class field unconditionally
rust: implement Class for ww_class support
rust: ww_mutex: add Mutex, AcquireCtx and MutexGuard
rust: ww_mutex: add AcquireCtxBackoff
rust: ww_mutex: implement DynLockSet
MAINTAINERS: add Onur Özkan as WW MUTEX maintainer

MAINTAINERS | 2 +
include/linux/ww_mutex.h | 8 +-
rust/helpers/helpers.c | 1 +
rust/helpers/ww_mutex.c | 33 ++
rust/kernel/sync/lock.rs | 1 +
rust/kernel/sync/lock/ww_mutex.rs | 449 ++++++++++++++++++
rust/kernel/sync/lock/ww_mutex/acquire_ctx.rs | 179 +++++++
.../sync/lock/ww_mutex/acquire_ctx_backoff.rs | 413 ++++++++++++++++
rust/kernel/sync/lock/ww_mutex/class.rs | 130 +++++
.../kernel/sync/lock/ww_mutex/dyn_lock_set.rs | 351 ++++++++++++++
10 files changed, 1561 insertions(+), 6 deletions(-)
create mode 100644 rust/helpers/ww_mutex.c
create mode 100644 rust/kernel/sync/lock/ww_mutex.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/acquire_ctx.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/acquire_ctx_backoff.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/class.rs
create mode 100644 rust/kernel/sync/lock/ww_mutex/dyn_lock_set.rs


base-commit: 47324d3a5b3abd781295044d01d92d09f184e872
--
2.51.2