svn commit: r311338 - head/sys/vm

Gleb Smirnoff glebius at FreeBSD.org
Wed Jan 4 22:31:11 UTC 2017


Author: glebius
Date: Wed Jan  4 22:31:09 2017
New Revision: 311338
URL: https://svnweb.freebsd.org/changeset/base/311338

Log:
  Fix assertion that checks that pages are consecutive to properly
  handle bogus_page insertion(s).

Modified:
  head/sys/vm/vnode_pager.c

Modified: head/sys/vm/vnode_pager.c
==============================================================================
--- head/sys/vm/vnode_pager.c	Wed Jan  4 22:29:00 2017	(r311337)
+++ head/sys/vm/vnode_pager.c	Wed Jan  4 22:31:09 2017	(r311338)
@@ -974,10 +974,14 @@ vnode_pager_generic_getpages(struct vnod
 #ifdef INVARIANTS
 	KASSERT(bp->b_npages <= nitems(bp->b_pages),
 	    ("%s: buf %p overflowed", __func__, bp));
-	for (int j = 1; j < bp->b_npages; j++)
-		KASSERT(bp->b_pages[j]->pindex - 1 ==
-		    bp->b_pages[j - 1]->pindex,
-		    ("%s: pages array not consecutive, bp %p", __func__, bp));
+	for (int j = 1, prev = 1; j < bp->b_npages; j++) {
+		if (bp->b_pages[j] == bogus_page)
+			continue;
+		KASSERT(bp->b_pages[j]->pindex - bp->b_pages[prev]->pindex ==
+		    j - prev, ("%s: pages array not consecutive, bp %p",
+		     __func__, bp));
+		prev = j;
+	}
 #endif
 
 	/*


More information about the svn-src-head mailing list