diff options
author | Ingo Molnar <mingo@kernel.org> | 2020-08-01 09:25:21 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2020-08-01 09:26:27 +0200 |
commit | 63722bbca662b19eb39fe709c11a5fa3994b4c3f (patch) | |
tree | 845060d13c90891cb89f18e29c40cf6dfdebe850 /kernel/locking | |
parent | 28cff52eaeb5c43144d0c730080aff0d6bc1e5d5 (diff) | |
parent | 61d56d7aa5eca3b909bce51ba8125b0fa44d7e17 (diff) |
Merge branch 'kcsan' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into locking/core
Pull v5.9 KCSAN bits from Paul E. McKenney.
Perhaps the most important change is that GCC 11 now has all fixes in place
to support KCSAN, so GCC support can be enabled again.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/locking')
-rw-r--r-- | kernel/locking/osq_lock.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/locking/osq_lock.c b/kernel/locking/osq_lock.c index 1f7734949ac8..1de006ed3aa8 100644 --- a/kernel/locking/osq_lock.c +++ b/kernel/locking/osq_lock.c @@ -154,7 +154,11 @@ bool osq_lock(struct optimistic_spin_queue *lock) */ for (;;) { - if (prev->next == node && + /* + * cpu_relax() below implies a compiler barrier which would + * prevent this comparison being optimized away. + */ + if (data_race(prev->next) == node && cmpxchg(&prev->next, node, NULL) == node) break; |