DragonFlyBSD Kernel Audit
DF-0896 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/fuse/fuse_vfsops.c b/sys/vfs/fuse/fuse_vfsops.c
--- a/sys/vfs/fuse/fuse_vfsops.c
+++ b/sys/vfs/fuse/fuse_vfsops.c
@@ -209,7 +209,11 @@
 
 	error = fuse_ipc_tx(fip);
 	if (error) {
+		fuse_ipc_put(fip);
 		vrele(devvp);
+		fuse_node_free(fmp, fmp->rfnp);
+		mp->mnt_data = NULL;
+		fuse_mount_free(fmp);
 		return error;
 	}
 
@@ -221,6 +225,9 @@
 	if (fuse_cmp_version(fmp, 7, 0) < 0) {
 		fuse_ipc_put(fip);
 		vrele(devvp);
+		fuse_node_free(fmp, fmp->rfnp);
+		mp->mnt_data = NULL;
+		fuse_mount_free(fmp);
 		return EPROTONOSUPPORT;
 	}