Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Oct 2015 09:03:32 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r289302 - head/sys/vm
Message-ID:  <201510140903.t9E93WWU082438@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Wed Oct 14 09:03:32 2015
New Revision: 289302
URL: https://svnweb.freebsd.org/changeset/base/289302

Log:
  Invalid pages should not appear on the inactive queue.  Change the
  check into an assertion.
  
  Reviewed by:	alc
  Tested by:	pho
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/sys/vm/vm_pageout.c

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Wed Oct 14 08:21:38 2015	(r289301)
+++ head/sys/vm/vm_pageout.c	Wed Oct 14 09:03:32 2015	(r289302)
@@ -1174,11 +1174,12 @@ unlock_page:
 		queues_locked = FALSE;
 
 		/*
-		 * Invalid pages can be easily freed. They cannot be
-		 * mapped, vm_page_free() asserts this.
+		 * Invalid pages cannot appear on a queue.  If
+		 * vm_pageout_fallback_object_lock() allowed a window
+		 * where the page could be invalidated, it should
+		 * detect this.
 		 */
-		if (m->valid == 0)
-			goto free_page;
+		KASSERT(m->valid != 0, ("Invalid page %p on inact queue", m));
 
 		/*
 		 * If the page has been referenced and the object is not dead,
@@ -1231,7 +1232,6 @@ unlock_page:
 			/*
 			 * Clean pages can be freed.
 			 */
-free_page:
 			vm_page_free(m);
 			PCPU_INC(cnt.v_dfree);
 			--page_shortage;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510140903.t9E93WWU082438>