]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:37 +0000 (13:09 +0100)
[ Upstream commit 518c32a1bc4f8df1a8442ee8cdfea3e2fcff20a0 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/dir.c

index dc0c50b97643b2f63fb7556729184df6db9006dc..6dd56841feab9648a449d04462259e439836f870 100644 (file)
@@ -1960,12 +1960,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: