]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFS: Fix wakeup of __nfs_lookup_revalidate() in unblock_revalidate()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 18 Jul 2025 23:15:27 +0000 (16:15 -0700)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 22 Jul 2025 12:10:41 +0000 (08:10 -0400)
Use store_release_wake_up() to add the appropriate memory barrier before
calling wake_up_var(&dentry->d_fsdata).

Reported-by: Lukáš Hejtmánek<xhejtman@ics.muni.cz>
Suggested-by: Santosh Pradhan <santosh.pradhan@gmail.com>
Link: https://lore.kernel.org/all/18945D18-3EDB-4771-B019-0335CE671077@ics.muni.cz/
Fixes: 99bc9f2eb3f7 ("NFS: add barriers when testing for NFS_FSDATA_BLOCKED")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/dir.c

index d0e0b435a84316af274dcf2505d996f2d1e3b270..d812179239362bccae5d99cd5ad0417088822422 100644 (file)
@@ -1828,9 +1828,7 @@ static void block_revalidate(struct dentry *dentry)
 
 static void unblock_revalidate(struct dentry *dentry)
 {
-       /* store_release ensures wait_var_event() sees the update */
-       smp_store_release(&dentry->d_fsdata, NULL);
-       wake_up_var(&dentry->d_fsdata);
+       store_release_wake_up(&dentry->d_fsdata, NULL);
 }
 
 /*