]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
NFS: Initialise verifiers for visible dentries in nfs_atomic_open()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 19 Nov 2025 13:39:50 +0000 (08:39 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 19 Nov 2025 13:46:21 +0000 (08:46 -0500)
Ensure that the verifiers are initialised before calling
d_splice_alias() in nfs_atomic_open().

Reported-by: Michael Stoler <michael.stoler@vastdata.com>
Fixes: 809fd143de88 ("NFSv4: Ensure nfs_atomic_open set the dentry verifier on ENOENT")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/dir.c

index 2eead7e85be5bfdc1beceda81abb8a8cbb0a9f42..3b8250ee014126d54139297fc9c06b91352193db 100644 (file)
@@ -2144,12 +2144,12 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
                d_drop(dentry);
                switch (err) {
                case -ENOENT:
-                       d_splice_alias(NULL, dentry);
                        if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE))
                                dir_verifier = inode_peek_iversion_raw(dir);
                        else
                                dir_verifier = nfs_save_change_attribute(dir);
                        nfs_set_verifier(dentry, dir_verifier);
+                       d_splice_alias(NULL, dentry);
                        break;
                case -EISDIR:
                case -ENOTDIR: