svn commit: r207448 - head/sys/vm
Kip Macy
kmacy at FreeBSD.org
Fri Apr 30 19:40:37 UTC 2010
Author: kmacy
Date: Fri Apr 30 19:40:37 2010
New Revision: 207448
URL: http://svn.freebsd.org/changeset/base/207448
Log:
- don't check hold_count without the page lock held
- don't leak the page lock if m->object is NULL
(assuming that that check will in fact even be valid when m->object is protected by the page lock)
Modified:
head/sys/vm/vm_pageout.c
Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c Fri Apr 30 19:05:01 2010 (r207447)
+++ head/sys/vm/vm_pageout.c Fri Apr 30 19:40:37 2010 (r207448)
@@ -775,16 +775,17 @@ rescan0:
if (m->flags & PG_MARKER)
continue;
- /*
- * A held page may be undergoing I/O, so skip it.
- */
- if (m->hold_count) {
- vm_page_requeue(m);
+ if (!vm_page_trylock(m)) {
addl_page_shortage++;
continue;
}
- if (!vm_page_trylock(m) || (object = m->object) == NULL) {
+ /*
+ * A held page may be undergoing I/O, so skip it.
+ */
+ if (m->hold_count || (object = m->object) == NULL) {
+ vm_page_unlock(m);
+ vm_page_requeue(m);
addl_page_shortage++;
continue;
}
More information about the svn-src-all
mailing list