summaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorNiklas Hallqvist <niklas@cvs.openbsd.org>1996-08-19 10:38:02 +0000
committerNiklas Hallqvist <niklas@cvs.openbsd.org>1996-08-19 10:38:02 +0000
commitab5f1860dfc8fee39ce6c35f1e973c8325e989b9 (patch)
tree4866737b1b0b1341ca8ced31a5151f97f1575efc /sys/vm
parent14856225739aa48b6c9cf4c17925362b2d95cea3 (diff)
A front pager can be lost during pagein, check for this case
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_object.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c
index 4d1ce228a41..68dc28e46cb 100644
--- a/sys/vm/vm_object.c
+++ b/sys/vm/vm_object.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vm_object.c,v 1.10 1996/08/18 18:44:46 niklas Exp $ */
+/* $OpenBSD: vm_object.c,v 1.11 1996/08/19 10:38:01 niklas Exp $ */
/* $NetBSD: vm_object.c,v 1.34 1996/02/28 22:35:35 gwr Exp $ */
/*
@@ -1238,10 +1238,12 @@ vm_object_collapse_aux(object)
* have given other threads the chance to, via
* readfaults, page in another page into the
* resident set. In this case the outer loop must
- * get reentered.
+ * get reentered. That is also the case if some other
+ * thread removes the front pager, a case that has
+ * been seen...
*/
while (backing_object->memq.tqh_first == NULL &&
- backing_object->pager != NULL &&
+ backing_object->pager != NULL && object->pager != NULL &&
(paged_offset = vm_pager_next(backing_object->pager,
paged_offset)) < backing_object->size) {
/*