diff options
author | dyson <dyson@FreeBSD.org> | 1996-05-21 05:26:27 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-05-21 05:26:27 +0000 |
commit | 89cf8c56415ceec18642260c5816b4f35d0d144c (patch) | |
tree | cbcaa1c5cdb768da9f77c6c66fd7206c552d499f | |
parent | a90379eb64afff8fdd7757104d779837cd5397d8 (diff) | |
download | FreeBSD-src-89cf8c56415ceec18642260c5816b4f35d0d144c.zip FreeBSD-src-89cf8c56415ceec18642260c5816b4f35d0d144c.tar.gz |
Don't protect non-managed pages off during object rundown. This fixes
a hang that occurs under certain circumstances when exiting X.
-rw-r--r-- | sys/vm/vm_object.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index d3720d9..a375a9d 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -61,7 +61,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_object.c,v 1.69 1996/05/18 03:37:55 dyson Exp $ + * $Id: vm_object.c,v 1.70 1996/05/19 07:36:50 dyson Exp $ */ /* @@ -407,7 +407,8 @@ vm_object_terminate(object) while ((p = TAILQ_FIRST(&object->memq)) != NULL) { if (p->flags & PG_BUSY) printf("vm_object_terminate: freeing busy page\n"); - vm_page_protect(p, VM_PROT_NONE); + if ((p->flags & PG_FICTITIOUS) == 0) + vm_page_protect(p, VM_PROT_NONE); PAGE_WAKEUP(p); vm_page_free(p); cnt.v_pfree++; |