diff options
author | alc <alc@FreeBSD.org> | 2002-12-24 19:02:03 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-12-24 19:02:03 +0000 |
commit | 43045f3d3bc6a7b4ef72e46302e010dceec93748 (patch) | |
tree | 56c51c0695103833d261340dc174a8c3262dcaed /sys | |
parent | f6006b0adb9669cfecc314b2986b34b8c119d9d4 (diff) | |
download | FreeBSD-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.c | 2 | ||||
-rw-r--r-- | sys/vm/vm_kern.c | 2 |
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); |