summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_pageout.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-07-08 18:04:26 +0000
committerkib <kib@FreeBSD.org>2012-07-08 18:04:26 +0000
commitaa091fdb2ae125164ac10aa9d8e195c33eb5b003 (patch)
treebc8f1829bf22453063c77b025d48c6b8e469aafb /sys/vm/vm_pageout.c
parent070f1b40dee0fd645f5c23ef2e65056284f5e544 (diff)
downloadFreeBSD-src-aa091fdb2ae125164ac10aa9d8e195c33eb5b003.zip
FreeBSD-src-aa091fdb2ae125164ac10aa9d8e195c33eb5b003.tar.gz
Avoid vm page queues lock leak after r238212.
Reported and tested by: Michael Butler <imb protected-networks net> Reviewed by: alc Pointy hat to: kib MFC after: 20 days
Diffstat (limited to 'sys/vm/vm_pageout.c')
-rw-r--r--sys/vm/vm_pageout.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index 9485fdd..11d040d 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -1030,7 +1030,6 @@ rescan0:
++pageout_lock_miss;
if (object->flags & OBJ_MIGHTBEDIRTY)
vnodes_skipped++;
- vm_page_lock_queues();
goto unlock_and_continue;
}
KASSERT(mp != NULL,
@@ -1041,7 +1040,6 @@ rescan0:
if (vget(vp, LK_EXCLUSIVE | LK_TIMELOCK,
curthread)) {
VM_OBJECT_LOCK(object);
- vm_page_lock_queues();
++pageout_lock_miss;
if (object->flags & OBJ_MIGHTBEDIRTY)
vnodes_skipped++;
@@ -1083,14 +1081,14 @@ rescan0:
* be undergoing I/O, so skip it
*/
if (m->hold_count) {
- vm_page_lock_queues();
- queues_locked = TRUE;
vm_page_unlock(m);
vm_page_requeue(m);
if (object->flags & OBJ_MIGHTBEDIRTY)
vnodes_skipped++;
goto unlock_and_continue;
}
+ vm_page_unlock_queues();
+ queues_locked = FALSE;
}
/*
OpenPOWER on IntegriCloud