[GIT PULL] locking updates for v7.3

From: Ingo Molnar

Date: Mon Aug 17 2026 - 05:50:10 EST


Linus,

Please pull the latest locking/core Git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-core-2026-08-17

for you to fetch changes up to ec4fad7c2bdc80c62fa73f799b77ad299f73dcc3:

Locking updates for v7.3:

Futexes:

- Use runtime constants for futex_hash computation
(K Prateek Nayak, Peter Zijlstra)

- Optimise the size check get_futex_key() (Sebastian Andrzej Siewior)

- Avoid private hash use-after-free on final put (Felix Hoffmann)

- Tell kmemleak we're not leaking __futex_queues (Peter Zijlstra)

Rust integration updates:

- Implement refcounted interrupt disable and SpinLockIrq for Rust
(Boqun Feng, Heiko Carstens, Joel Fernandes, Lyude Paul)

- Rust sync: add helpers for mb, dma_mb and friends;
add generic memory barriers and use LKMM atomics
instead of Rust atomics in the revocable code (Gary Guo)

- Add abstraction and integrate synchronize_rcu() (Philipp Stanner)

Lock debugging:

- Add qspinlock contended_release tracepoint
(Dmitry Ilvokhin, Peter Zijlstra)

- Enable the printing of held locks of remote running tasks and print
task CPU (Ingo Molnar)

- percpu-rwsem: Annotate intentional data race in readers_active_check()
(Sun Shaojie)

Misc fixes and updates by Boqun Feng, Peter Zijlstra, Fangrui Song,
Naveen Kumar Chaudhary and Thomas Huth.

Thanks,

Ingo

------------------>
Boqun Feng (9):
preempt: Introduce HARDIRQ_DISABLE_BITS
preempt: Introduce __preempt_count_{sub,add}_return()
irq,spin_lock: Add counted interrupt disabling/enabling
locking: Switch to _irq_{disable,enable}() variants in cleanup guards
sched: Remove the unused preempt_offset parameter of __cant_sleep()
sched: Avoid signed comparison of preempt_count() in __cant_migrate()
preempt: Introduce HAS_SEPARATE_PREEMPT_RESCHED_BITS
arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS
rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers

Dmitry Ilvokhin (4):
locking: Factor out queued_spin_release()
locking/qspinlock: Add contended_release tracepoint
tracing/lock: Use TRACE_EVENT_FN() for contended_release
x86/paravirt: Trace contended_release on unlock

Fangrui Song (1):
riscv/runtime-const: Disable linker relaxation for RUNTIME_MAGIC

Felix Hoffmann (1):
futex: Avoid private hash use-after-free on final put

Gary Guo (3):
rust: sync: Add helpers for mb, dma_mb and friends
rust: sync: Add generic memory barriers
rust: revocable: Use LKMM atomics instead of Rust atomics

Heiko Carstens (1):
s390/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS

Ingo Molnar (1):
lockdep: Enable the printing of held locks of remote running tasks and print task CPU

Joel Fernandes (1):
preempt: Track NMI nesting to separate per-CPU counter

K Prateek Nayak (5):
arm64/runtime-const: Use aarch64_insn_patch_text_nosync() for patching
arm64/runtime-const: Introduce runtime_const_mask_32()
riscv/runtime-const: Replace open-coded placeholder with RUNTIME_MAGIC
riscv/runtime-const: Introduce runtime_const_mask_32()
s390/runtime-const: Introduce runtime_const_mask_32()

Lyude Paul (6):
openrisc: Include <linux/cpumask.h> in smp.h
irq: Add KUnit test for refcounted interrupt enable/disable
rust: Introduce interrupt module
rust: sync: Use super::* in spinlock.rs
rust: sync: Add SpinLockIrq
rust: sync: Introduce SpinLockIrq::lock_with() and friends

Naveen Kumar Chaudhary (1):
locking/lockdep: Fix NULL pointer dereference in __lock_set_class()

Peter Zijlstra (5):
x86/runtime-const: Introduce runtime_const_mask_32()
asm-generic/runtime-const: Add dummy runtime_const_mask_32()
futex: Use runtime constants for __futex_hash() hot path
x86/paravirt: Use static_call() for the paravirt spinlock ops
futex: Tell kmemleak we're not leaking __futex_queues

Philipp Stanner (3):
rust: sync: Add abstraction for synchronize_rcu()
rust: revocable: Use safe synchronize_rcu() abstraction
rust: sync: Use safe synchronize_rcu() abstraction in poll

Sebastian Andrzej Siewior (1):
futex: Optimise the size check get_futex_key()

Sun Shaojie (1):
locking/percpu-rwsem: Annotate intentional data race in readers_active_check()

Thomas Huth (1):
static_call / jump_label: Replace __ASSEMBLY__ with __ASSEMBLER__ in headers


arch/arm/include/asm/jump_label.h | 4 +-
arch/arm64/Kconfig | 1 +
arch/arm64/include/asm/preempt.h | 20 ++
arch/arm64/include/asm/runtime-const.h | 63 ++++-
arch/mips/include/asm/spinlock.h | 6 +-
arch/openrisc/include/asm/smp.h | 2 +
arch/riscv/include/asm/asm.h | 1 +
arch/riscv/include/asm/runtime-const.h | 84 +++++--
arch/s390/Kconfig | 1 +
arch/s390/include/asm/lowcore.h | 13 +-
arch/s390/include/asm/preempt.h | 51 ++--
arch/s390/include/asm/runtime-const.h | 22 +-
arch/x86/Kconfig | 1 +
arch/x86/hyperv/hv_spinlock.c | 4 +-
arch/x86/include/asm/cpufeatures.h | 2 +-
arch/x86/include/asm/paravirt-spinlock.h | 21 +-
arch/x86/include/asm/preempt.h | 61 +++--
arch/x86/include/asm/runtime-const.h | 14 ++
arch/x86/kernel/cpu/common.c | 2 +-
arch/x86/kernel/kvm.c | 5 +-
arch/x86/kernel/paravirt-spinlocks.c | 63 ++++-
arch/x86/kernel/static_call.c | 27 ++
arch/x86/xen/spinlock.c | 5 +-
include/asm-generic/preempt.h | 14 ++
include/asm-generic/qspinlock.h | 38 ++-
include/asm-generic/runtime-const.h | 1 +
include/asm-generic/vmlinux.lds.h | 5 +-
include/linux/hardirq.h | 40 ++-
include/linux/interrupt_rc.h | 82 ++++++
include/linux/jump_label.h | 10 +-
include/linux/kernel.h | 4 +-
include/linux/preempt.h | 44 +++-
include/linux/spinlock.h | 49 ++--
include/linux/spinlock_api_smp.h | 41 +++
include/linux/spinlock_api_up.h | 15 ++
include/linux/spinlock_rt.h | 18 ++
include/linux/static_call_types.h | 4 +-
include/trace/events/lock.h | 10 +-
kernel/Kconfig.locks | 20 ++
kernel/Kconfig.preempt | 4 +
kernel/futex/core.c | 58 +++--
kernel/irq/Makefile | 1 +
kernel/irq/refcount_interrupt_test.c | 109 ++++++++
kernel/locking/lockdep.c | 36 ++-
kernel/locking/mutex.c | 4 +
kernel/locking/percpu-rwsem.c | 2 +-
kernel/locking/qspinlock.c | 22 ++
kernel/locking/spinlock.c | 31 +++
kernel/sched/core.c | 18 +-
kernel/sched/fair.c | 12 +-
kernel/softirq.c | 36 ++-
lib/locking-selftest.c | 2 +-
rust/helpers/barrier.c | 30 +++
rust/helpers/helpers.c | 1 +
rust/helpers/interrupt.c | 13 +
rust/helpers/spinlock.c | 15 ++
rust/helpers/sync.c | 5 +
rust/kernel/interrupt.rs | 89 +++++++
rust/kernel/lib.rs | 1 +
rust/kernel/revocable.rs | 28 ++-
rust/kernel/sync.rs | 9 +-
rust/kernel/sync/atomic/ordering.rs | 2 +-
rust/kernel/sync/barrier.rs | 127 +++++++---
rust/kernel/sync/lock/global.rs | 3 +
rust/kernel/sync/lock/spinlock.rs | 329 ++++++++++++++++++++++++-
rust/kernel/sync/poll.rs | 10 +-
rust/kernel/sync/rcu.rs | 16 ++
tools/arch/x86/include/asm/cpufeatures.h | 2 +-
tools/include/linux/static_call_types.h | 4 +-
tools/testing/selftests/bpf/bpf_experimental.h | 7 +-
70 files changed, 1653 insertions(+), 241 deletions(-)
create mode 100644 include/linux/interrupt_rc.h
create mode 100644 kernel/irq/refcount_interrupt_test.c
create mode 100644 rust/helpers/interrupt.c
create mode 100644 rust/kernel/interrupt.rs