Skip to content

Commit 120311a

Browse files
paulmckrcufbq
authored andcommitted
doc: Spinlocks are implied RCU readers
In kernels built with CONFIG_PREEMPT_RT=n, spinlock critical sections are RCU readers because they disable preemption. However, they are also RCU readers in CONFIG_PREEMPT_RT=y because the -rt locking primitives contain rcu_read_lock() and rcu_read_unlock(). Therefore, upgrade rcu_dereference.rst to document this non-obvious case. Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Closes: https://lore.kernel.org/lkml/CAHk-=whGKvjHCtJ6W4pQ0_h_k9fiFQ8V2GpM=BqYnB2X=SJ+XQ@mail.gmail.com/ Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
1 parent 41bccc9 commit 120311a

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

Documentation/RCU/rcu_dereference.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,10 @@ member of the rcu_dereference() to use in various situations:
408408
RCU flavors, an RCU read-side critical section is entered
409409
using rcu_read_lock(), anything that disables bottom halves,
410410
anything that disables interrupts, or anything that disables
411-
preemption.
411+
preemption. Please note that spinlock critical sections
412+
are also implied RCU read-side critical sections, even when
413+
they are preemptible, as they are in kernels built with
414+
CONFIG_PREEMPT_RT=y.
412415

413416
2. If the access might be within an RCU read-side critical section
414417
on the one hand, or protected by (say) my_lock on the other,

0 commit comments

Comments
 (0)