summaryrefslogtreecommitdiffstats
path: root/fs/inode.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjguzik@gmail.com>2024-11-13 16:51:03 +0100
committerChristian Brauner <brauner@kernel.org>2024-11-14 10:44:35 +0100
commit45c9faf50665812a14fc9b40ab9d6cb893792ffd (patch)
tree2a7a4aee27b5b90506286361a89c264dc000f306 /fs/inode.c
parentstatmount: add flag to retrieve unescaped options (diff)
downloadlinux-45c9faf50665812a14fc9b40ab9d6cb893792ffd.tar.xz
linux-45c9faf50665812a14fc9b40ab9d6cb893792ffd.zip
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>
Diffstat (limited to 'fs/inode.c')
-rw-r--r--fs/inode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/inode.c b/fs/inode.c
index d7a0c36e1ba6..84ab7b209b38 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -746,7 +746,7 @@ static void evict(struct inode *inode)
* ___wait_var_event() either sees the bit cleared or
* waitqueue_active() check in wake_up_var() sees the waiter.
*/
- smp_mb();
+ smp_mb__after_spinlock();
inode_wake_up_bit(inode, __I_NEW);
BUG_ON(inode->i_state != (I_FREEING | I_CLEAR));
spin_unlock(&inode->i_lock);