diff options
author | dyson <dyson@FreeBSD.org> | 1998-01-31 20:30:18 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1998-01-31 20:30:18 +0000 |
commit | 44cc663f3d24f0c53c23c3fe6af9fc017e83d523 (patch) | |
tree | dcb26e721282fdc59ea99bcc0e8b7d073dc56357 | |
parent | f71f7b54be34061b94415924ac7530c1a73977db (diff) | |
download | FreeBSD-src-44cc663f3d24f0c53c23c3fe6af9fc017e83d523.zip FreeBSD-src-44cc663f3d24f0c53c23c3fe6af9fc017e83d523.tar.gz |
contigalloc doesn't place the allocated page(s) into an object, and
now this breaks vm_page_wire (due to wired page accounting per object.)
This should fix a problem as described by Donald Maddox.
-rw-r--r-- | sys/vm/vm_page.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 6837ecf..dea6b04 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91 - * $Id: vm_page.c,v 1.87 1998/01/22 17:30:41 dyson Exp $ + * $Id: vm_page.c,v 1.88 1998/01/31 11:56:47 dyson Exp $ */ /* @@ -1185,7 +1185,8 @@ vm_page_wire(m) vm_page_unqueue(m); splx(s); cnt.v_wire_count++; - m->object->wire_count++; + if (m->object) + m->object->wire_count++; } (*vm_page_queues[PQ_NONE].lcnt)++; m->wire_count++; @@ -1211,7 +1212,8 @@ vm_page_unwire(m) if (m->wire_count > 0) { m->wire_count--; if (m->wire_count == 0) { - m->object->wire_count--; + if (m->object) + m->object->wire_count--; cnt.v_wire_count--; TAILQ_INSERT_TAIL(&vm_page_queue_active, m, pageq); m->queue = PQ_ACTIVE; |