summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-12-24 19:02:03 +0000
committeralc <alc@FreeBSD.org>2002-12-24 19:02:03 +0000
commit43045f3d3bc6a7b4ef72e46302e010dceec93748 (patch)
tree56c51c0695103833d261340dc174a8c3262dcaed /sys
parentf6006b0adb9669cfecc314b2986b34b8c119d9d4 (diff)
downloadFreeBSD-src-43045f3d3bc6a7b4ef72e46302e010dceec93748.zip
FreeBSD-src-43045f3d3bc6a7b4ef72e46302e010dceec93748.tar.gz
- Hold the page queues lock around calls to vm_page_flag_clear().
Diffstat (limited to 'sys')
-rw-r--r--sys/vm/vm_fault.c2
-rw-r--r--sys/vm/vm_kern.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 564e5c6..4d1499a 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1068,7 +1068,9 @@ vm_fault_copy_entry(dst_map, src_map, dst_entry, src_entry)
/*
* Enter it in the pmap...
*/
+ vm_page_lock_queues();
vm_page_flag_clear(dst_m, PG_ZERO);
+ vm_page_unlock_queues();
pmap_enter(dst_map->pmap, vaddr, dst_m, prot, FALSE);
vm_page_lock_queues();
vm_page_flag_set(dst_m, PG_WRITEABLE);
diff --git a/sys/vm/vm_kern.c b/sys/vm/vm_kern.c
index f72bc32..ac32d69 100644
--- a/sys/vm/vm_kern.c
+++ b/sys/vm/vm_kern.c
@@ -401,8 +401,10 @@ retry:
}
if (flags & M_ZERO && (m->flags & PG_ZERO) == 0)
pmap_zero_page(m);
+ vm_page_lock_queues();
vm_page_flag_clear(m, PG_ZERO);
m->valid = VM_PAGE_BITS_ALL;
+ vm_page_unlock_queues();
}
vm_object_unlock(kmem_object);
OpenPOWER on IntegriCloud