summaryrefslogtreecommitdiffstats
path: root/sys/fs/nfsserver/nfs_nfsdstate.c
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2014-01-01 02:49:45 +0000
committerrmacklem <rmacklem@FreeBSD.org>2014-01-01 02:49:45 +0000
commite876d4736cec7a72c621f94d97df99a81f04693a (patch)
tree8468e7f782ca8c4cf5ada54dc0f7b9e73e3a2127 /sys/fs/nfsserver/nfs_nfsdstate.c
parent0b3ac62883e350fd41c5565331525f6ba9ff38c0 (diff)
downloadFreeBSD-src-e876d4736cec7a72c621f94d97df99a81f04693a.zip
FreeBSD-src-e876d4736cec7a72c621f94d97df99a81f04693a.tar.gz
MFC: r259854
The NFSv4 server would call VOP_SETATTR() with a shared locked vnode when a Getattr for a file is done by a client other than the one that holds the file's delegation. This would only happen when delegations are enabled and the problem is fixed by this patch.
Diffstat (limited to 'sys/fs/nfsserver/nfs_nfsdstate.c')
-rw-r--r--sys/fs/nfsserver/nfs_nfsdstate.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/fs/nfsserver/nfs_nfsdstate.c b/sys/fs/nfsserver/nfs_nfsdstate.c
index d74a5a9..05bb26c 100644
--- a/sys/fs/nfsserver/nfs_nfsdstate.c
+++ b/sys/fs/nfsserver/nfs_nfsdstate.c
@@ -4853,15 +4853,15 @@ nfsrv_checkgetattr(struct nfsrv_descript *nd, vnode_t vp,
nva.na_filerev > delegfilerev) ||
(NFSVNO_ISSETSIZE(&nva) &&
nva.na_size != nvap->na_size)) {
- nfsvno_updfilerev(vp, nvap, cred, p);
+ error = nfsvno_updfilerev(vp, nvap, cred, p);
if (NFSVNO_ISSETSIZE(&nva))
nvap->na_size = nva.na_size;
}
- }
+ } else
+ error = 0; /* Ignore callback errors for now. */
} else {
NFSUNLOCKSTATE();
}
- error = 0;
out:
NFSEXITCODE2(error, nd);
OpenPOWER on IntegriCloud