From ec9e0453f98b41cc65f508b2e459ad940b1d41b3 Mon Sep 17 00:00:00 2001 From: Venkatesh Srinivas Date: Tue, 15 Feb 2011 21:04:35 -0800 Subject: [PATCH] kernel -- vm locking: Add vm object locking to vm_object_referenced. --- sys/vm/vm_object.c | 14 +++++--------- 1 files changed, 5 insertions(+), 9 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index da31ba6..9eeea98 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -246,15 +246,9 @@ vm_object_allocate(objtype_t type, vm_pindex_t size) void vm_object_reference(vm_object_t object) { - if (object) { - lwkt_gettoken(&vmobj_token); - object->ref_count++; - if (object->type == OBJT_VNODE) { - vref(object->handle); - /* XXX what if the vnode is being destroyed? */ - } - lwkt_reltoken(&vmobj_token); - } + lwkt_gettoken(&vmobj_token); + vm_object_reference_locked(object); + lwkt_reltoken(&vmobj_token); } void @@ -262,11 +256,13 @@ vm_object_reference_locked(vm_object_t object) { if (object) { ASSERT_LWKT_TOKEN_HELD(&vmobj_token); + vm_object_lock(object); object->ref_count++; if (object->type == OBJT_VNODE) { vref(object->handle); /* XXX what if the vnode is being destroyed? */ } + vm_object_unlock(object); } } -- 1.7.7.2