diff options
Diffstat (limited to 'kernel/locking/mcs_spinlock.h')
| -rw-r--r-- | kernel/locking/mcs_spinlock.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/locking/mcs_spinlock.h b/kernel/locking/mcs_spinlock.h index d1fe2ba5bac9..75e114bdf3f2 100644 --- a/kernel/locking/mcs_spinlock.h +++ b/kernel/locking/mcs_spinlock.h | |||
| @@ -78,7 +78,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node) | |||
| 78 | */ | 78 | */ |
| 79 | return; | 79 | return; |
| 80 | } | 80 | } |
| 81 | ACCESS_ONCE(prev->next) = node; | 81 | WRITE_ONCE(prev->next, node); |
| 82 | 82 | ||
| 83 | /* Wait until the lock holder passes the lock down. */ | 83 | /* Wait until the lock holder passes the lock down. */ |
| 84 | arch_mcs_spin_lock_contended(&node->locked); | 84 | arch_mcs_spin_lock_contended(&node->locked); |
| @@ -91,7 +91,7 @@ void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node) | |||
| 91 | static inline | 91 | static inline |
| 92 | void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node) | 92 | void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node) |
| 93 | { | 93 | { |
| 94 | struct mcs_spinlock *next = ACCESS_ONCE(node->next); | 94 | struct mcs_spinlock *next = READ_ONCE(node->next); |
| 95 | 95 | ||
| 96 | if (likely(!next)) { | 96 | if (likely(!next)) { |
| 97 | /* | 97 | /* |
| @@ -100,7 +100,7 @@ void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node) | |||
| 100 | if (likely(cmpxchg(lock, node, NULL) == node)) | 100 | if (likely(cmpxchg(lock, node, NULL) == node)) |
| 101 | return; | 101 | return; |
| 102 | /* Wait until the next pointer is set */ | 102 | /* Wait until the next pointer is set */ |
| 103 | while (!(next = ACCESS_ONCE(node->next))) | 103 | while (!(next = READ_ONCE(node->next))) |
| 104 | cpu_relax_lowlatency(); | 104 | cpu_relax_lowlatency(); |
| 105 | } | 105 | } |
| 106 | 106 | ||
