diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1996-08-19 10:38:02 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1996-08-19 10:38:02 +0000 |
commit | ab5f1860dfc8fee39ce6c35f1e973c8325e989b9 (patch) | |
tree | 4866737b1b0b1341ca8ced31a5151f97f1575efc /sys/vm | |
parent | 14856225739aa48b6c9cf4c17925362b2d95cea3 (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.c | 8 |
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) { /* |