Skip to content

Commit 03d44ee

Browse files
rohanmclurempe
authored andcommitted
powerpc: qspinlock: Mark accesses to qnode lock checks
The powerpc implementation of qspinlocks will both poll and spin on the bitlock guarding a qnode. Mark these accesses with READ_ONCE to convey to KCSAN that polling is intentional here. Signed-off-by: Rohan McLure <[email protected]> Reviewed-by: Nicholas Piggin <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://msgid.link/[email protected]
1 parent 98e61df commit 03d44ee

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

arch/powerpc/lib/qspinlock.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ static __always_inline bool yield_to_prev(struct qspinlock *lock, struct qnode *
435435

436436
smp_rmb(); /* See __yield_to_locked_owner comment */
437437

438-
if (!node->locked) {
438+
if (!READ_ONCE(node->locked)) {
439439
yield_to_preempted(prev_cpu, yield_count);
440440
spin_begin();
441441
return preempted;
@@ -584,7 +584,7 @@ static __always_inline void queued_spin_lock_mcs_queue(struct qspinlock *lock, b
584584

585585
/* Wait for mcs node lock to be released */
586586
spin_begin();
587-
while (!node->locked) {
587+
while (!READ_ONCE(node->locked)) {
588588
spec_barrier();
589589

590590
if (yield_to_prev(lock, node, old, paravirt))

0 commit comments

Comments
 (0)