diff options
author | alfred <alfred@FreeBSD.org> | 2001-05-22 19:01:26 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2001-05-22 19:01:26 +0000 |
commit | 53829812525551d44793280058aed8219133cb7a (patch) | |
tree | 06833ab2358917a0490a6013e14510975a0fe8ab | |
parent | 8e0770e25c7f4696b90568738821fd554a2868ce (diff) | |
download | FreeBSD-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.c | 5 |
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 */ |