⬢ DragonFlyBSD Kernel Audit
DF-3218 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/dirfs/dirfs_vfsops.c
+++ b/sys/vfs/dirfs/dirfs_vfsops.c
@@ -258,8 +258,8 @@ dirfs_root(struct mount *mp, struct vnode **vpp)
 		fd = open(dmp->dm_path, O_DIRECTORY);
 		if (fd == -1) {
 			dbg(9, "failed to open ROOT node\n");
-			dirfs_free_vp(dmp, dnp);
-			dirfs_node_free(dmp, dnp);
+			dmp->dm_root = NULL;
+			dirfs_node_drop(dmp, dnp);	/* drop life-of-mount ref */
 			return errno;
 		}
 		dnp->dn_fd = fd;