vfs: make evict() use smp_mb__after_spinlock instead of smp_mb

It literally directly follows a spin_lock() call.

This whacks an explicit barrier on x86-64.

Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link: https://lore.kernel.org/r/20241113155103.4194099-1-mjguzik@gmail.com
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Mateusz Guzik 2024-11-13 16:51:03 +01:00 committed by Christian Brauner
parent 2f4d4503e9
commit 45c9faf506
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2

View File

@ -746,7 +746,7 @@ static void evict(struct inode *inode)
* ___wait_var_event() either sees the bit cleared or * ___wait_var_event() either sees the bit cleared or
* waitqueue_active() check in wake_up_var() sees the waiter. * waitqueue_active() check in wake_up_var() sees the waiter.
*/ */
smp_mb(); smp_mb__after_spinlock();
inode_wake_up_bit(inode, __I_NEW); inode_wake_up_bit(inode, __I_NEW);
BUG_ON(inode->i_state != (I_FREEING | I_CLEAR)); BUG_ON(inode->i_state != (I_FREEING | I_CLEAR));
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);