From: Trond Myklebust Date: Fri, 17 Dec 2021 20:36:58 +0000 (-0500) Subject: NFS: Fix the verifier for case sensitive filesystem in nfs_atomic_open() X-Git-Tag: v5.15.198~374 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e77419cbb547f41768fe1fdc58c85a041665e579;p=thirdparty%2Fkernel%2Fstable.git NFS: Fix the verifier for case sensitive filesystem in nfs_atomic_open() [ Upstream commit 68eaba4ca924a97a863c5c81c0b23a11dcb6db90 ] Signed-off-by: Trond Myklebust Signed-off-by: Anna Schumaker Stable-dep-of: 518c32a1bc4f ("NFS: Initialise verifiers for visible dentries in nfs_atomic_open()") Signed-off-by: Sasha Levin --- diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 2a325a79327bc..dc0c50b97643b 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1887,6 +1887,7 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry, struct iattr attr = { .ia_valid = ATTR_OPEN }; struct inode *inode; unsigned int lookup_flags = 0; + unsigned long dir_verifier; bool switched = false; int created = 0; int err; @@ -1960,7 +1961,11 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry, switch (err) { case -ENOENT: d_splice_alias(NULL, dentry); - nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); + 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); break; case -EISDIR: case -ENOTDIR: