diff options
author | alc <alc@FreeBSD.org> | 2002-09-02 04:04:12 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-09-02 04:04:12 +0000 |
commit | 0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b (patch) | |
tree | 975d74f6cbda496c6cf3c6d805bf1a9455c48c80 /sys/kern/uipc_cow.c | |
parent | bb1016da55bc396e548c721c5bed3495697cef7d (diff) | |
download | FreeBSD-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.c | 4 |
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(); |