NFS client bugfixes for Linux 5.3

Highlights include:
 
 Bugfixes:
 - Fix inode fileid checks in attribute revalidation code
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEESQctxSBg8JpV8KqEZwvnipYKAPIFAl1v7lYACgkQZwvnipYK
 APIwmBAAnaHqHBqOCB6aYl6gn9jEiazlklw6/3FsIv4RFc5z5chVI2lMlFtRxy06
 VeUepxU02TzBjB6tN5M+o0jy8aaZbgwYIpSToZTG4f0hVN8YywiBpP5UXC1fK9Om
 4bQPFk+WkCXGzv18wy1G6E3Zej0Jtz4mtFEv/ezijyxt9hqSkGiW0HqAZwGMjWBL
 8m92aEk4fR0QTIs3GOSiA5UPEPJtYU5QdPey9qTupt0dpDidp6e8tTFBOvOKnuHp
 Czf4uMyMM47ysiVsLScYqhrobrk9xEOpR9nZ5S1BLxWwHoTIiLx4kcZO21LHsFim
 DVppZyDs0Jc9Zvz57ljLxaQh02v5nZqKzwgo4Ig7kMnYfx2A5LQz+3aX+Hj71RPv
 rKBWLIyBt1V2YmyJqpnVNKp7tTB8sGOd4fHMVHmKQ+7VYVYtZt6P6YIgr8T2nTn3
 qYBR+OreXu+cgsg60ORTC63Yd9wxolv9NERKOapzp7bZ4SG057QwNj+jPD5pyiYX
 uf+tHuStC3ST6N90mSwYUTUEg69TSCHGqkeWrIBZQmz0kZbpiZSb99eUSAY7gmF/
 js0+T6d8kO/QxwTkdV5V/SILa+9wbd8SJcxcMuzIfPEwo2fq8TGVzXZhkCl9dhMT
 Dykie+TLxFvFVPiadjhNoqvLPPQb03goQYL1l+DKvADC9BemmjY=
 =dEk2
 -----END PGP SIGNATURE-----

Merge tag 'nfs-for-5.3-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs

Pull NFS client bugfix from Trond Myklebust:
 "Regression fix inode fileid checks in attribute revalidation code"

* tag 'nfs-for-5.3-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
  NFS: Fix inode fileid checks in attribute revalidation code
This commit is contained in:
Linus Torvalds 2019-09-04 11:09:53 -07:00
commit 3b47fd5ca9
1 changed files with 10 additions and 8 deletions

View File

@ -1403,11 +1403,12 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ))
return 0;
/* No fileid? Just exit */
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID))
return 0;
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) {
/* Only a mounted-on-fileid? Just exit */
if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID)
return 0;
/* Has the inode gone and changed behind our back? */
if (nfsi->fileid != fattr->fileid) {
} else if (nfsi->fileid != fattr->fileid) {
/* Is this perhaps the mounted-on fileid? */
if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) &&
nfsi->fileid == fattr->mounted_on_fileid)
@ -1807,11 +1808,12 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
nfs_display_fhandle_hash(NFS_FH(inode)),
atomic_read(&inode->i_count), fattr->valid);
/* No fileid? Just exit */
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID))
return 0;
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) {
/* Only a mounted-on-fileid? Just exit */
if (fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID)
return 0;
/* Has the inode gone and changed behind our back? */
if (nfsi->fileid != fattr->fileid) {
} else if (nfsi->fileid != fattr->fileid) {
/* Is this perhaps the mounted-on fileid? */
if ((fattr->valid & NFS_ATTR_FATTR_MOUNTED_ON_FILEID) &&
nfsi->fileid == fattr->mounted_on_fileid)