Date: Mon, 24 Aug 2020 01:58:46 +0000 (UTC) From: Rick Macklem <rmacklem@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r364604 - projects/nfs-over-tls/sys/kern Message-ID: <202008240158.07O1wkaj029478@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008240158.07O1wkaj029478>