summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2001-05-22 19:01:26 +0000
committeralfred <alfred@FreeBSD.org>2001-05-22 19:01:26 +0000
commit53829812525551d44793280058aed8219133cb7a (patch)
tree06833ab2358917a0490a6013e14510975a0fe8ab
parent8e0770e25c7f4696b90568738821fd554a2868ce (diff)
downloadFreeBSD-src-53829812525551d44793280058aed8219133cb7a.zip
FreeBSD-src-53829812525551d44793280058aed8219133cb7a.tar.gz
aquire vm mutex in swp_pager_async_iodone. Don't call swp_pager_async_iodone
with the mutex held.
-rw-r--r--sys/vm/swap_pager.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index 44f4465..3f9f758 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -1474,8 +1474,8 @@ swap_pager_putpages(object, m, count, sync, rtvals)
*/
mtx_unlock(&Giant);
- mtx_lock(&vm_mtx);
swp_pager_async_iodone(bp);
+ mtx_lock(&vm_mtx);
splx(s);
}
@@ -1554,7 +1554,7 @@ swp_pager_async_iodone(bp)
/*
* remove the mapping for kernel virtual
*/
-
+ mtx_lock(&vm_mtx);
pmap_qremove((vm_offset_t)bp->b_data, bp->b_npages);
/*
@@ -1689,6 +1689,7 @@ swp_pager_async_iodone(bp)
if (object)
vm_object_pip_wakeupn(object, bp->b_npages);
+ mtx_unlock(&vm_mtx);
/*
* release the physical I/O buffer
*/
OpenPOWER on IntegriCloud