[PATCH 0/5] srcu: Add lockdep coverage for atomic SRCU and fix IRQ-state bug

From: Kunwu Chan

Date: Mon Sep 14 2026 - 05:36:02 EST


The atomic SRCU fastpath enables synchronize_srcu_atomic() to be called
from contexts with interrupts disabled. This series extends the
rcutorture lockdep tests to cover the atomic SRCU path and fixes an
IRQ-state preservation bug discovered along the way.

Patch 1-2 add lockdep test coverage for atomic SRCU:
- testtype 4: same-type atomic SRCU deadlock
- testtype 5: atomic SRCU + raw spinlock dependency cycle
- testtype 6: rcu_read_lock() → synchronize_srcu_atomic()
legitimate nesting, must not trigger lockdep warning

Patch 3 fixes a bug where the synchronize_srcu_atomic() call chain
unconditionally re-enables interrupts on unlock, by switching to the
irqsave/irqrestore variants throughout the call chain.

Patch 4 fixes a pre-existing double nerrs count in the script.

Patch 5 adds testtype 7: cross-CPU IRQ context mismatch detection,
where an atomic SRCU reader held with IRQs enabled on one CPU is
paired with synchronize_srcu_atomic() via IPI on another CPU.

Kunwu Chan (5):
rcutorture: Add atomic SRCU lockdep support
selftests/rcutorture: Wire atomic SRCU into srcu_lockdep.sh
srcutree: Preserve IRQ state in synchronize_srcu_atomic() callchain
selftests/rcutorture: Fix double nerrs count in srcu_lockdep.sh
rcutorture: Add atomic SRCU cross-CPU IRQ context mismatch test

kernel/rcu/rcutorture.c | 109 +++++++++++++++++-
kernel/rcu/srcutree.c | 42 ++++---
.../selftests/rcutorture/bin/srcu_lockdep.sh | 77 ++++++++++++-
3 files changed, 205 insertions(+), 23 deletions(-)

--
2.43.0