diff options
Diffstat (limited to 'sys/uvm/uvm_page.c')
-rw-r--r-- | sys/uvm/uvm_page.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/uvm/uvm_page.c b/sys/uvm/uvm_page.c index 2caca1ba938..0390a1b9e46 100644 --- a/sys/uvm/uvm_page.c +++ b/sys/uvm/uvm_page.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_page.c,v 1.60 2007/05/18 14:41:55 art Exp $ */ +/* $OpenBSD: uvm_page.c,v 1.61 2007/06/18 21:51:15 pedro Exp $ */ /* $NetBSD: uvm_page.c,v 1.44 2000/11/27 08:40:04 chs Exp $ */ /* @@ -1040,7 +1040,7 @@ uvm_pagealloc_strat(obj, off, anon, flags, strat, free_list) pg->pg_flags = PG_BUSY|PG_CLEAN|PG_FAKE; pg->pg_version++; if (anon) { - anon->u.an_page = pg; + anon->an_page = pg; atomic_setbits_int(&pg->pg_flags, PQ_ANON); #ifdef UBC uvm_pgcnt_anon++; @@ -1168,7 +1168,7 @@ uvm_pagefree(struct vm_page *pg) if (saved_loan_count) return; - } else if (saved_loan_count && (pg->pg_flags & PQ_ANON)) { + } else if (saved_loan_count && pg->uanon) { /* * if our page is owned by an anon and is loaned out to the * kernel then we just want to drop ownership and return. @@ -1177,6 +1177,7 @@ uvm_pagefree(struct vm_page *pg) * page as long as we are holding PQ lock. */ atomic_clearbits_int(&pg->pg_flags, PQ_ANON); + pg->uanon->an_page = NULL; pg->uanon = NULL; return; } @@ -1208,11 +1209,12 @@ uvm_pagefree(struct vm_page *pg) pg->wire_count = 0; uvmexp.wired--; } -#ifdef UBC if (pg->uanon) { + pg->uanon->an_page = NULL; +#ifdef UBC uvm_pgcnt_anon--; - } #endif + } /* * and put on free queue |