summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1996-05-21 05:26:27 +0000
committerdyson <dyson@FreeBSD.org>1996-05-21 05:26:27 +0000
commit89cf8c56415ceec18642260c5816b4f35d0d144c (patch)
treecbcaa1c5cdb768da9f77c6c66fd7206c552d499f /sys
parenta90379eb64afff8fdd7757104d779837cd5397d8 (diff)
downloadFreeBSD-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.
Diffstat (limited to 'sys')
-rw-r--r--sys/vm/vm_object.c5
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++;
OpenPOWER on IntegriCloud