diff options
Diffstat (limited to 'kernel/locking/qspinlock.c')
| -rw-r--r-- | kernel/locking/qspinlock.c | 4 | 
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c index 2b23378775fe..ebe6b8ec7cb3 100644 --- a/kernel/locking/qspinlock.c +++ b/kernel/locking/qspinlock.c @@ -371,7 +371,7 @@ void __lockfunc queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)  	/*  	 * We're pending, wait for the owner to go away.  	 * -	 * 0,1,1 -> 0,1,0 +	 * 0,1,1 -> *,1,0  	 *  	 * this wait loop must be a load-acquire such that we match the  	 * store-release that clears the locked bit and create lock @@ -380,7 +380,7 @@ void __lockfunc queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)  	 * barriers.  	 */  	if (val & _Q_LOCKED_MASK) -		atomic_cond_read_acquire(&lock->val, !(VAL & _Q_LOCKED_MASK)); +		smp_cond_load_acquire(&lock->locked, !VAL);  	/*  	 * take ownership and clear the pending bit.  | 
