svn commit: r308331 - stable/11/sys/vm

Konstantin Belousov kib at FreeBSD.org
Sat Nov 5 10:09:22 UTC 2016


Author: kib
Date: Sat Nov  5 10:09:21 2016
New Revision: 308331
URL: https://svnweb.freebsd.org/changeset/base/308331

Log:
  MFC r308094:
  Add unlock_vp() helper.
  
  MFC r308095 (by markj):
  Add one more use of unlock_vp().

Modified:
  stable/11/sys/vm/vm_fault.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/vm_fault.c
==============================================================================
--- stable/11/sys/vm/vm_fault.c	Sat Nov  5 09:46:48 2016	(r308330)
+++ stable/11/sys/vm/vm_fault.c	Sat Nov  5 10:09:21 2016	(r308331)
@@ -153,6 +153,16 @@ unlock_map(struct faultstate *fs)
 }
 
 static void
+unlock_vp(struct faultstate *fs)
+{
+
+	if (fs->vp != NULL) {
+		vput(fs->vp);
+		fs->vp = NULL;
+	}
+}
+
+static void
 unlock_and_deallocate(struct faultstate *fs)
 {
 
@@ -168,11 +178,8 @@ unlock_and_deallocate(struct faultstate 
 		fs->first_m = NULL;
 	}
 	vm_object_deallocate(fs->first_object);
-	unlock_map(fs);	
-	if (fs->vp != NULL) { 
-		vput(fs->vp);
-		fs->vp = NULL;
-	}
+	unlock_map(fs);
+	unlock_vp(fs);
 }
 
 static void
@@ -321,8 +328,7 @@ RetryFault:;
 			growstack = FALSE;
 			goto RetryFault;
 		}
-		if (fs.vp != NULL)
-			vput(fs.vp);
+		unlock_vp(&fs);
 		return (result);
 	}
 
@@ -339,10 +345,7 @@ RetryFault:;
 		vm_map_lock(fs.map);
 		if (vm_map_lookup_entry(fs.map, vaddr, &fs.entry) &&
 		    (fs.entry->eflags & MAP_ENTRY_IN_TRANSITION)) {
-			if (fs.vp != NULL) {
-				vput(fs.vp);
-				fs.vp = NULL;
-			}
+			unlock_vp(&fs);
 			fs.entry->eflags |= MAP_ENTRY_NEEDS_WAKEUP;
 			vm_map_unlock_and_wait(fs.map, 0);
 		} else
@@ -642,10 +645,7 @@ readrest:
 				vp = fs.object->handle;
 				if (vp == fs.vp)
 					goto vnode_locked;
-				else if (fs.vp != NULL) {
-					vput(fs.vp);
-					fs.vp = NULL;
-				}
+				unlock_vp(&fs);
 				locked = VOP_ISLOCKED(vp);
 
 				if (locked != LK_EXCLUSIVE)


More information about the svn-src-all mailing list