svn commit: r300382 - head/sys/vm

Alan Cox alc at FreeBSD.org
Sat May 21 23:18:24 UTC 2016


Author: alc
Date: Sat May 21 23:18:23 2016
New Revision: 300382
URL: https://svnweb.freebsd.org/changeset/base/300382

Log:
  When descending a shadow chain of objects, it makes no sense to update
  the current offset (spelled: "fs.pindex") until it is known whether a
  backing object exists.  In fact, if not for the fact that the backing
  object offset is zero when there is no backing object, this update would
  produce a broken offset.
  
  Reviewed by:	kib

Modified:
  head/sys/vm/vm_fault.c

Modified: head/sys/vm/vm_fault.c
==============================================================================
--- head/sys/vm/vm_fault.c	Sat May 21 23:14:27 2016	(r300381)
+++ head/sys/vm/vm_fault.c	Sat May 21 23:18:23 2016	(r300382)
@@ -705,7 +705,6 @@ vnode_locked:
 		 * Move on to the next object.  Lock the next object before
 		 * unlocking the current one.
 		 */
-		fs.pindex += OFF_TO_IDX(fs.object->backing_object_offset);
 		next_object = fs.object->backing_object;
 		if (next_object == NULL) {
 			/*
@@ -743,6 +742,8 @@ vnode_locked:
 			vm_object_pip_add(next_object, 1);
 			if (fs.object != fs.first_object)
 				vm_object_pip_wakeup(fs.object);
+			fs.pindex +=
+			    OFF_TO_IDX(fs.object->backing_object_offset);
 			VM_OBJECT_WUNLOCK(fs.object);
 			fs.object = next_object;
 		}


More information about the svn-src-all mailing list