diff options
author | jeff <jeff@FreeBSD.org> | 2002-09-25 01:23:43 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2002-09-25 01:23:43 +0000 |
commit | ee079921fc510be5ab2a48c65307498e5aeb5b86 (patch) | |
tree | 91edd21b81132664a507c88a1d6dde214dd343cd /sys/vm/vnode_pager.c | |
parent | f4ce091d174d74956c8d8a55abe92a76736816b5 (diff) | |
download | FreeBSD-src-ee079921fc510be5ab2a48c65307498e5aeb5b86.zip FreeBSD-src-ee079921fc510be5ab2a48c65307498e5aeb5b86.tar.gz |
- Add a ASSERT_VOP_LOCKED in vnode_pager_alloc.
- Lock access to v_iflags.
Diffstat (limited to 'sys/vm/vnode_pager.c')
-rw-r--r-- | sys/vm/vnode_pager.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index f09f147..d47cb7c 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -120,6 +120,8 @@ vnode_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot, vp = (struct vnode *) handle; + ASSERT_VOP_LOCKED(vp, "vnode_pager_alloc"); + mtx_lock(&Giant); /* * Prevent race condition when allocating the object. This @@ -212,9 +214,12 @@ vnode_pager_haspage(object, pindex, before, after) if (vp == NULL) return FALSE; - mp_fixme("Unlocked iflags access"); - if (vp->v_iflag & VI_DOOMED) + VI_LOCK(vp); + if (vp->v_iflag & VI_DOOMED) { + VI_UNLOCK(vp); return FALSE; + } + VI_UNLOCK(vp); /* * If filesystem no longer mounted or offset beyond end of file we do * not have the page. |