kernel: Fix ABA problem in try_acquire_read_spinlock()

This commit is contained in:
Pawel Dziepak
2014-01-06 21:03:42 +01:00
parent bae6d7196a
commit 4ca31ac964
2 changed files with 2 additions and 9 deletions
+1 -4
View File
@@ -210,10 +210,7 @@ static inline bool
try_acquire_read_spinlock_inline(rw_spinlock* lock)
{
uint32 previous = atomic_add(&lock->lock, 1);
if ((previous & (1u << 31)) == 0)
return true;
atomic_test_and_set(&lock->lock, 1u << 31, previous);
return false;
return (previous & (1u << 31)) == 0;
}
+1 -5
View File
@@ -617,11 +617,7 @@ try_acquire_read_spinlock(rw_spinlock* lock)
#endif
uint32 previous = atomic_add(&lock->lock, 1);
if ((previous & (1u << 31)) == 0)
return true;
atomic_test_and_set(&lock->lock, 1u << 31, previous);
return false;
return (previous & (1u << 31)) == 0;
}