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; } _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"