summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_cow.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-09-02 04:04:12 +0000
committeralc <alc@FreeBSD.org>2002-09-02 04:04:12 +0000
commit0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b (patch)
tree975d74f6cbda496c6cf3c6d805bf1a9455c48c80 /sys/kern/uipc_cow.c
parentbb1016da55bc396e548c721c5bed3495697cef7d (diff)
downloadFreeBSD-src-0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b.zip
FreeBSD-src-0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b.tar.gz
o Synchronize updates to struct vm_page::cow with the page queues lock.
Diffstat (limited to 'sys/kern/uipc_cow.c')
-rw-r--r--sys/kern/uipc_cow.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/uipc_cow.c b/sys/kern/uipc_cow.c
index 14231a2..f570677 100644
--- a/sys/kern/uipc_cow.c
+++ b/sys/kern/uipc_cow.c
@@ -96,7 +96,9 @@ socow_iodone(void *addr, void *args)
pp = PHYS_TO_VM_PAGE(paddr);
s = splvm();
/* remove COW mapping */
+ vm_page_lock_queues();
vm_page_cowclear(pp);
+ vm_page_unlock_queues();
vm_object_deallocate(pp->object);
splx(s);
/* note that sf_buf_free() unwires the page for us*/
@@ -141,12 +143,12 @@ socow_setup(struct mbuf *m0, struct uio *uio)
/*
* set up COW
*/
+ vm_page_lock_queues();
vm_page_cowsetup(pp);
/*
* wire the page for I/O
*/
- vm_page_lock_queues();
vm_page_wire(pp);
vm_page_unlock_queues();
OpenPOWER on IntegriCloud