diff options
author | alc <alc@FreeBSD.org> | 2002-07-30 06:45:39 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-07-30 06:45:39 +0000 |
commit | 18acb2ea275ccf40f6db01964cd3438104000486 (patch) | |
tree | 78883f1ae1188a82468efc2bdbd4e195df509357 | |
parent | eb814d118c4a5e3b73d46399b5540e0b0d26a319 (diff) | |
download | FreeBSD-src-18acb2ea275ccf40f6db01964cd3438104000486.zip FreeBSD-src-18acb2ea275ccf40f6db01964cd3438104000486.tar.gz |
o Lock page queue accesses by pmap_release_free_page().
-rw-r--r-- | sys/amd64/amd64/pmap.c | 2 | ||||
-rw-r--r-- | sys/i386/i386/pmap.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 612d947..7b51b92 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -1268,6 +1268,7 @@ pmap_release_free_page(pmap_t pmap, vm_page_t p) if (vm_page_sleep_busy(p, FALSE, "pmaprl")) return 0; + vm_page_lock_queues(); vm_page_busy(p); /* @@ -1298,6 +1299,7 @@ pmap_release_free_page(pmap_t pmap, vm_page_t p) p->wire_count--; cnt.v_wire_count--; vm_page_free_zero(p); + vm_page_unlock_queues(); return 1; } diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 612d947..7b51b92 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -1268,6 +1268,7 @@ pmap_release_free_page(pmap_t pmap, vm_page_t p) if (vm_page_sleep_busy(p, FALSE, "pmaprl")) return 0; + vm_page_lock_queues(); vm_page_busy(p); /* @@ -1298,6 +1299,7 @@ pmap_release_free_page(pmap_t pmap, vm_page_t p) p->wire_count--; cnt.v_wire_count--; vm_page_free_zero(p); + vm_page_unlock_queues(); return 1; } |