The following commit has been merged in the master branch: commit 53e760d8949895390e256e723e7ee46618310361 Merge: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 bee47cb026e762841f3faece47b51f985e215edb Author: Linus Torvalds <torva...@linux-foundation.org> Date: Mon Aug 11 07:38:55 2025 -0700
Merge tag 'nfsd-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux Pull nfsd fixes from Chuck Lever: - A correctness fix for delegated timestamps - Address an NFSD shutdown hang when LOCALIO is in use - Prevent a remotely exploitable crasher when TLS is in use * tag 'nfsd-6.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: sunrpc: fix handling of server side tls alerts nfsd: avoid ref leak in nfsd_open_local_fh() nfsd: don't set the ctime on delegated atime updates diff --combined fs/nfsd/vfs.c index 98ab55ba3ced7,eaf04751d07fe..edf050766e570 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@@ -470,7 -470,15 +470,15 @@@ static int __nfsd_setattr(struct dentr if (!iap->ia_valid) return 0; - iap->ia_valid |= ATTR_CTIME; + /* + * If ATTR_DELEG is set, then this is an update from a client that + * holds a delegation. If this is an update for only the atime, the + * ctime should not be changed. If the update contains the mtime + * too, then ATTR_CTIME should already be set. + */ + if (!(iap->ia_valid & ATTR_DELEG)) + iap->ia_valid |= ATTR_CTIME; + return notify_change(&nop_mnt_idmap, dentry, iap, NULL); } @@@ -1867,6 -1875,7 +1875,6 @@@ nfsd_rename(struct svc_rqst *rqstp, str struct svc_fh *tfhp, char *tname, int tlen) { struct dentry *fdentry, *tdentry, *odentry, *ndentry, *trap; - struct inode *fdir, *tdir; int type = S_IFDIR; __be32 err; int host_err; @@@ -1882,8 -1891,10 +1890,8 @@@ goto out; fdentry = ffhp->fh_dentry; - fdir = d_inode(fdentry); tdentry = tfhp->fh_dentry; - tdir = d_inode(tdentry); err = nfserr_perm; if (!flen || isdotent(fname, flen) || !tlen || isdotent(tname, tlen)) @@@ -1944,10 -1955,10 +1952,10 @@@ retry } else { struct renamedata rd = { .old_mnt_idmap = &nop_mnt_idmap, - .old_dir = fdir, + .old_parent = fdentry, .old_dentry = odentry, .new_mnt_idmap = &nop_mnt_idmap, - .new_dir = tdir, + .new_parent = tdentry, .new_dentry = ndentry, }; int retries; -- LinuxNextTracking