summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-04-22 05:36:14 +0000
committeralc <alc@FreeBSD.org>2003-04-22 05:36:14 +0000
commit3b5c40ed838f99688036844aab9688b2f355c1c1 (patch)
tree6fdb11ca214089e3b1cdb4d1bf5d81c036ced927 /sys/vm/vm_page.c
parentd20f3763cbc6290001c6e0495c68f9e1e77c4da3 (diff)
downloadFreeBSD-src-3b5c40ed838f99688036844aab9688b2f355c1c1.zip
FreeBSD-src-3b5c40ed838f99688036844aab9688b2f355c1c1.tar.gz
Revision 1.52 of vm/uma_core.c has led to UMA's obj_alloc() being
called without Giant; and obj_alloc() in turn calls vm_page_alloc() without Giant. This causes an assertion failure in vm_page_alloc(). Fortunately, obj_alloc() is now MPSAFE. So, we need only clean up some assertions. - Weaken the assertion in vm_page_lookup() to require Giant only if the vm_object isn't locked. - Remove an assertion from vm_page_alloc() that duplicates a check performed in vm_page_lookup(). In collaboration with: gallatin, jake, jeff
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index a0d7744..8ce52ab 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -652,7 +652,8 @@ vm_page_lookup(vm_object_t object, vm_pindex_t pindex)
{
vm_page_t m;
- mtx_assert(object == kmem_object ? &object->mtx : &Giant, MA_OWNED);
+ if (!VM_OBJECT_LOCKED(object))
+ GIANT_REQUIRED;
m = vm_page_splay(pindex, object->root);
if ((object->root = m) != NULL && m->pindex != pindex)
m = NULL;
@@ -770,8 +771,6 @@ vm_page_alloc(vm_object_t object, vm_pindex_t pindex, int req)
if ((req & VM_ALLOC_NOOBJ) == 0) {
KASSERT(object != NULL,
("vm_page_alloc: NULL object."));
- mtx_assert(object == kmem_object ? &object->mtx : &Giant,
- MA_OWNED);
KASSERT(!vm_page_lookup(object, pindex),
("vm_page_alloc: page already allocated"));
color = pindex + object->pg_color;
OpenPOWER on IntegriCloud