diff options
| author | Mike Pritchard <mpp@FreeBSD.org> | 2007-02-13 03:27:45 +0000 |
|---|---|---|
| committer | Mike Pritchard <mpp@FreeBSD.org> | 2007-02-13 03:27:45 +0000 |
| commit | 5cb6b1effbdd634b40df6b7810a936a50aa19c33 (patch) | |
| tree | b462984c9f818b37699dfa0b439924da98146d05 /sys/nfsserver | |
| parent | 55fd006cc8f9ae0c3e459d66450b51462d74a588 (diff) | |
Notes
Diffstat (limited to 'sys/nfsserver')
| -rw-r--r-- | sys/nfsserver/nfs_serv.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c index 0e54d8ae1880..94186720d027 100644 --- a/sys/nfsserver/nfs_serv.c +++ b/sys/nfsserver/nfs_serv.c @@ -435,9 +435,15 @@ nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, if (vp->v_type == VDIR) { error = EISDIR; goto out; - } else if ((error = nfsrv_access(vp, VWRITE, cred, rdonly, - td, 0)) != 0) - goto out; + } else { + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + if ((error = nfsrv_access(vp, VWRITE, cred, rdonly, + td, 0)) != 0) { + VFS_UNLOCK_GIANT(vfslocked); + goto out; + } + VFS_UNLOCK_GIANT(vfslocked); + } } vfslocked = VFS_LOCK_GIANT(vp->v_mount); error = VOP_SETATTR(vp, vap, cred, td); |
