From 6071389ee563b727481090dc5f7d57bdd9acfde6 Mon Sep 17 00:00:00 2001 From: kib Date: Thu, 2 Jun 2016 02:39:40 +0000 Subject: MFC r300758: Prevent parallel object collapses. --- sys/vm/vm_object.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 95a9a77..6d193de 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1721,6 +1721,9 @@ vm_object_collapse(vm_object_t object) * case. */ if (backing_object->ref_count == 1) { + vm_object_pip_add(object, 1); + vm_object_pip_add(backing_object, 1); + /* * If there is exactly one reference to the backing * object, we can collapse it into the parent. @@ -1792,11 +1795,13 @@ vm_object_collapse(vm_object_t object) KASSERT(backing_object->ref_count == 1, ( "backing_object %p was somehow re-referenced during collapse!", backing_object)); + vm_object_pip_wakeup(backing_object); backing_object->type = OBJT_DEAD; backing_object->ref_count = 0; VM_OBJECT_WUNLOCK(backing_object); vm_object_destroy(backing_object); + vm_object_pip_wakeup(object); object_collapses++; } else { /* -- cgit v1.1