linux/kernel/rcu
Paul E. McKenney 175b45ed34 srcu: Use raw spinlocks so call_srcu() can be used under preempt_disable()
Tree SRCU has used non-raw spinlocks for many years, motivated by a desire
to avoid unnecessary real-time latency and the absence of any reason to
use raw spinlocks.  However, the recent use of SRCU in tracing as the
underlying implementation of RCU Tasks Trace means that call_srcu()
is invoked from preemption-disabled regions of code, which in turn
requires that any locks acquired by call_srcu() or its callees must be
raw spinlocks.

This commit therefore converts SRCU's spinlocks to raw spinlocks.

[boqun: Add Fixes tag]

Reported-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Fixes: c27cea4416 ("rcu: Re-implement RCU Tasks Trace in terms of SRCU-fast")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Boqun Feng <boqun@kernel.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
2026-03-25 08:55:50 -07:00
..
Kconfig rcu: Add noinstr-fast rcu_read_{,un}lock_tasks_trace() APIs 2026-01-01 16:39:46 +08:00
Kconfig.debug rcu: Add a small-width RCU watching counter debug option 2025-10-28 17:32:56 +01:00
Makefile
rcu_segcblist.c rcu/nocb: Simplify (de-)offloading state machine 2024-09-09 00:03:55 +05:30
rcu_segcblist.h rcu: Remove unused declaration rcu_segcblist_offload() 2024-10-22 15:36:56 +02:00
rcu.h srcu: Use raw spinlocks so call_srcu() can be used under preempt_disable() 2026-03-25 08:55:50 -07:00
rcuscale.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
rcutorture.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
refscale.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
srcutiny.c srcu: Permit Tiny SRCU srcu_read_unlock() with interrupts disabled 2025-11-05 23:58:11 +01:00
srcutree.c srcu: Use raw spinlocks so call_srcu() can be used under preempt_disable() 2026-03-25 08:55:50 -07:00
sync.c rcu: Eliminate lockless accesses to rcu_sync->gp_count 2024-07-04 13:48:57 -07:00
tasks.h Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
tiny.c sched: Provide and use set_need_resched_current() 2025-11-20 22:26:09 +01:00
tree_exp.h rcu: Make expedited RCU CPU stall warnings detect stall-end races 2026-01-07 21:58:26 +08:00
tree_nocb.h rcu/nocb: Extract nocb_defer_wakeup_cancel() helper 2026-01-23 11:12:25 -08:00
tree_plugin.h rcu: Fix rcu_read_unlock() deadloop due to softirq 2026-01-07 21:58:37 +08:00
tree_stall.h sched: Provide and use set_need_resched_current() 2025-11-20 22:26:09 +01:00
tree.c Merge branch 'rcu-nocb.20260123a' 2026-01-23 11:15:36 -08:00
tree.h Merge branch 'rcu-nocb.20260123a' 2026-01-23 11:15:36 -08:00
update.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00