diff options
author | jeff <jeff@FreeBSD.org> | 2003-10-04 13:44:51 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2003-10-04 13:44:51 +0000 |
commit | 46f6642c5bca121df517d577061a4fb52a124f96 (patch) | |
tree | 487476dd61515d18f833992c9d180bc46bf35519 /sys/nfsclient/nfs_vfsops.c | |
parent | c95a875344205952f20ff014cf829029ff0c4b26 (diff) | |
download | FreeBSD-src-46f6642c5bca121df517d577061a4fb52a124f96.zip FreeBSD-src-46f6642c5bca121df517d577061a4fb52a124f96.tar.gz |
- Acquire the vnode interlock prior to dropping the mntvnode_mtx.
- Make a note of the lack of XLOCK protection in this code. We would access
a vnode while it is changing identities without Giant.
Diffstat (limited to 'sys/nfsclient/nfs_vfsops.c')
-rw-r--r-- | sys/nfsclient/nfs_vfsops.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c index 6976012..b44ef6c 100644 --- a/sys/nfsclient/nfs_vfsops.c +++ b/sys/nfsclient/nfs_vfsops.c @@ -943,8 +943,9 @@ loop: if (vp->v_mount != mp) goto loop; vnp = TAILQ_NEXT(vp, v_nmntvnodes); - mtx_unlock(&mntvnode_mtx); + /* XXX Not obeying XLOCK. */ VI_LOCK(vp); + mtx_unlock(&mntvnode_mtx); if (VOP_ISLOCKED(vp, NULL) || TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY) { VI_UNLOCK(vp); |