diff options
| author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2025-07-18 16:15:27 -0700 |
|---|---|---|
| committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2025-07-22 08:10:41 -0400 |
| commit | 1db3a48e83bb64a70bf27263b7002585574a9c2d (patch) | |
| tree | a2d0291c7718a33f1c355f099094e1e70780b706 | |
| parent | f5b3108e6a14418b120a3c38ca589b8d6cf87627 (diff) | |
NFS: Fix wakeup of __nfs_lookup_revalidate() in unblock_revalidate()
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>
| -rw-r--r-- | fs/nfs/dir.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index d0e0b435a843..d81217923936 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -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); } /* |
