Page MenuHomeFreeBSD

D26160.id76135.diff
No OneTemporary

D26160.id76135.diff

Index: sys/kern/vfs_mount.c
===================================================================
--- sys/kern/vfs_mount.c
+++ sys/kern/vfs_mount.c
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: projects/nfs-over-tls/sys/kern/vfs_mount.c 363591 2020-07-27 01:20:49Z rmacklem $");
+__FBSDID("$FreeBSD: head/sys/kern/vfs_mount.c 363517 2020-07-25 10:31:52Z mjg $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -966,11 +966,14 @@
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 @@
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);

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 22, 3:55 AM (3 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25900224
Default Alt Text
D26160.id76135.diff (1 KB)

Event Timeline