summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-07-30 06:45:39 +0000
committeralc <alc@FreeBSD.org>2002-07-30 06:45:39 +0000
commit18acb2ea275ccf40f6db01964cd3438104000486 (patch)
tree78883f1ae1188a82468efc2bdbd4e195df509357
parenteb814d118c4a5e3b73d46399b5540e0b0d26a319 (diff)
downloadFreeBSD-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.c2
-rw-r--r--sys/i386/i386/pmap.c2
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;
}
OpenPOWER on IntegriCloud