svn commit: r364604 - projects/nfs-over-tls/sys/kern

Rick Macklem rmacklem at FreeBSD.org
Mon Aug 24 01:58:46 UTC 2020


Author: rmacklem
Date: Mon Aug 24 01:58:46 2020
New Revision: 364604
URL: https://svnweb.freebsd.org/changeset/base/364604

Log:
  Fix a panic when VFS_STATFS() fails during an NFS mount introduced by r363517.

Modified:
  projects/nfs-over-tls/sys/kern/vfs_mount.c

Modified: projects/nfs-over-tls/sys/kern/vfs_mount.c
==============================================================================
--- projects/nfs-over-tls/sys/kern/vfs_mount.c	Mon Aug 24 01:51:21 2020	(r364603)
+++ projects/nfs-over-tls/sys/kern/vfs_mount.c	Mon Aug 24 01:58:46 2020	(r364604)
@@ -966,11 +966,14 @@ vfs_domount_first(
 	if ((error = VFS_MOUNT(mp)) != 0 ||
 	    (error1 = VFS_STATFS(mp, &mp->mnt_stat)) != 0 ||
 	    (error1 = VFS_ROOT(mp, LK_EXCLUSIVE, &newdp)) != 0) {
+		rootvp = NULL;
 		if (error1 != 0) {
 			error = error1;
 			rootvp = vfs_cache_root_clear(mp);
-			if (rootvp != NULL)
+			if (rootvp != NULL) {
+				vhold(rootvp);
 				vrele(rootvp);
+			}
 			if ((error1 = VFS_UNMOUNT(mp, 0)) != 0)
 				printf("VFS_UNMOUNT returned %d\n", error1);
 		}
@@ -980,6 +983,10 @@ vfs_domount_first(
 		VI_LOCK(vp);
 		vp->v_iflag &= ~VI_MOUNT;
 		VI_UNLOCK(vp);
+		if (rootvp != NULL) {
+			vn_seqc_write_end(rootvp);
+			vdrop(rootvp);
+		}
 		vn_seqc_write_end(vp);
 		vrele(vp);
 		return (error);


More information about the svn-src-projects mailing list