|
@@ -170,7 +170,7 @@ static __always_inline void clear_pending_set_locked(struct qspinlock *lock)
|
|
|
* @tail : The new queue tail code word
|
|
|
* Return: The previous queue tail code word
|
|
|
*
|
|
|
- * xchg(lock, tail)
|
|
|
+ * xchg(lock, tail), which heads an address dependency
|
|
|
*
|
|
|
* p,*,* -> n,*,* ; prev = xchg(lock, node)
|
|
|
*/
|
|
@@ -409,13 +409,11 @@ queue:
|
|
|
if (old & _Q_TAIL_MASK) {
|
|
|
prev = decode_tail(old);
|
|
|
/*
|
|
|
- * The above xchg_tail() is also a load of @lock which generates,
|
|
|
- * through decode_tail(), a pointer.
|
|
|
- *
|
|
|
- * The address dependency matches the RELEASE of xchg_tail()
|
|
|
- * such that the access to @prev must happen after.
|
|
|
+ * The above xchg_tail() is also a load of @lock which
|
|
|
+ * generates, through decode_tail(), a pointer. The address
|
|
|
+ * dependency matches the RELEASE of xchg_tail() such that
|
|
|
+ * the subsequent access to @prev happens after.
|
|
|
*/
|
|
|
- smp_read_barrier_depends();
|
|
|
|
|
|
WRITE_ONCE(prev->next, node);
|
|
|
|