summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2003-06-13 06:17:42 +0000
committerAlan Cox <alc@FreeBSD.org>2003-06-13 06:17:42 +0000
commit33a609ece0410174e895ff49f019d843456022d1 (patch)
treef703091b3732147dff7dffe9886d43c7c4a48029
parent8630c1173e342bff070f47dafd97765af57208cb (diff)
Notes
-rw-r--r--sys/vm/swap_pager.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index e1880f8b8dd8..67ec883f9fe8 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -1485,8 +1485,6 @@ swp_pager_async_iodone(bp)
/*
* set object, raise to splvm().
*/
- if (bp->b_npages)
- object = bp->b_pages[0]->object;
s = splvm();
/*
@@ -1494,6 +1492,10 @@ swp_pager_async_iodone(bp)
*/
pmap_qremove((vm_offset_t)bp->b_data, bp->b_npages);
+ if (bp->b_npages) {
+ object = bp->b_pages[0]->object;
+ VM_OBJECT_LOCK(object);
+ }
vm_page_lock_queues();
/*
* cleanup pages. If an error occurs writing to swap, we are in
@@ -1620,7 +1622,6 @@ swp_pager_async_iodone(bp)
* pip refs on the object.
*/
if (object != NULL) {
- VM_OBJECT_LOCK(object);
vm_object_pip_wakeupn(object, bp->b_npages);
VM_OBJECT_UNLOCK(object);
}