diff options
Diffstat (limited to 'include/linux/bit_spinlock.h')
| -rw-r--r-- | include/linux/bit_spinlock.h | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/include/linux/bit_spinlock.h b/include/linux/bit_spinlock.h index e612575a259..b4326bfa684 100644 --- a/include/linux/bit_spinlock.h +++ b/include/linux/bit_spinlock.h @@ -23,11 +23,11 @@ static inline void bit_spin_lock(int bitnum, unsigned long *addr)  	preempt_disable();  #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)  	while (unlikely(test_and_set_bit_lock(bitnum, addr))) { -		while (test_bit(bitnum, addr)) { -			preempt_enable(); +		preempt_enable(); +		do {  			cpu_relax(); -			preempt_disable(); -		} +		} while (test_bit(bitnum, addr)); +		preempt_disable();  	}  #endif  	__acquire(bitlock);  |