summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorariane <ariane@openbsd.org>2009-05-08 15:10:35 +0000
committerariane <ariane@openbsd.org>2009-05-08 15:10:35 +0000
commitf887d8d0403e8b9283cbbc348bef494edda140cd (patch)
tree8dd6bced15f2c0cb1d953c9e23853fcbe1204e01
parentuse the number of channels rather than the number of stereo dacs/adcs, (diff)
downloadwireguard-openbsd-f887d8d0403e8b9283cbbc348bef494edda140cd.tar.xz
wireguard-openbsd-f887d8d0403e8b9283cbbc348bef494edda140cd.zip
Clear PQ_AOBJ at pageremove: when a page is no longer part of a uvm_object,
it is also not part of an aobj. Clear anon flags at pagefree: page is no longer part of an anon. ok oga
-rw-r--r--sys/uvm/uvm_page.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/uvm/uvm_page.c b/sys/uvm/uvm_page.c
index ea5bbf37d00..39008ac0c19 100644
--- a/sys/uvm/uvm_page.c
+++ b/sys/uvm/uvm_page.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_page.c,v 1.79 2009/05/08 13:50:15 ariane Exp $ */
+/* $OpenBSD: uvm_page.c,v 1.80 2009/05/08 15:10:35 ariane Exp $ */
/* $NetBSD: uvm_page.c,v 1.44 2000/11/27 08:40:04 chs Exp $ */
/*
@@ -195,7 +195,7 @@ uvm_pageremove(struct vm_page *pg)
/* object should be locked */
TAILQ_REMOVE(&pg->uobject->memq, pg, listq);
- atomic_clearbits_int(&pg->pg_flags, PG_TABLED);
+ atomic_clearbits_int(&pg->pg_flags, PG_TABLED|PQ_AOBJ);
pg->uobject->uo_npages--;
pg->uobject = NULL;
pg->pg_version++;
@@ -1186,7 +1186,9 @@ uvm_pagefree(struct vm_page *pg)
uvmexp.wired--;
}
if (pg->uanon) {
+ atomic_clearbits_int(&pg->pg_flags, PQ_ANON);
pg->uanon->an_page = NULL;
+ pg->uanon = NULL;
#ifdef UBC
uvm_pgcnt_anon--;
#endif