mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-17 22:41:25 +00:00
JFS is missing a memory barrier
JFS is missing a memory barrier needed to close the critical section before clearing the lock bit. Use lock bitops for this. unlock_page() has a second barrier after clearing the lock, which is required because it checks whether the waitqueue is active without locks. Such a barrier is not required here because the waitqueue spinlock is always taken (something to think about if performance is an issue). Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
This commit is contained in:
parent
67e6682f18
commit
54af6233d1
@ -39,11 +39,11 @@ static struct {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define metapage_locked(mp) test_bit(META_locked, &(mp)->flag)
|
#define metapage_locked(mp) test_bit(META_locked, &(mp)->flag)
|
||||||
#define trylock_metapage(mp) test_and_set_bit(META_locked, &(mp)->flag)
|
#define trylock_metapage(mp) test_and_set_bit_lock(META_locked, &(mp)->flag)
|
||||||
|
|
||||||
static inline void unlock_metapage(struct metapage *mp)
|
static inline void unlock_metapage(struct metapage *mp)
|
||||||
{
|
{
|
||||||
clear_bit(META_locked, &mp->flag);
|
clear_bit_unlock(META_locked, &mp->flag);
|
||||||
wake_up(&mp->wait);
|
wake_up(&mp->wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user