diff options
author | 2009-05-08 15:10:35 +0000 | |
---|---|---|
committer | 2009-05-08 15:10:35 +0000 | |
commit | f887d8d0403e8b9283cbbc348bef494edda140cd (patch) | |
tree | 8dd6bced15f2c0cb1d953c9e23853fcbe1204e01 | |
parent | use the number of channels rather than the number of stereo dacs/adcs, (diff) | |
download | wireguard-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.c | 6 |
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 |