diff options
Diffstat (limited to 'include/asm-generic/mutex-xchg.h')
| -rw-r--r-- | include/asm-generic/mutex-xchg.h | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/include/asm-generic/mutex-xchg.h b/include/asm-generic/mutex-xchg.h index a6b4a7bd6ac9..3269ec4e195f 100644 --- a/include/asm-generic/mutex-xchg.h +++ b/include/asm-generic/mutex-xchg.h @@ -91,8 +91,12 @@ __mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *))  static inline int  __mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *))  { -	int prev = atomic_xchg_acquire(count, 0); +	int prev; +	if (atomic_read(count) != 1) +		return 0; + +	prev = atomic_xchg_acquire(count, 0);  	if (unlikely(prev < 0)) {  		/*  		 * The lock was marked contended so we must restore that |