DragonFlyBSD Kernel Audit
DF-0856 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/dirfs/dirfs_subr.c b/sys/vfs/dirfs/dirfs_subr.c
--- a/sys/vfs/dirfs/dirfs_subr.c
+++ b/sys/vfs/dirfs/dirfs_subr.c
@@ -194,6 +194,7 @@
 		dnp->dn_fd = openat(pathnp->dn_fd, tmp,
 				    openflags, vap->va_mode);
 		if (dnp->dn_fd == -1) {
+			dirfs_node_free(dmp, dnp);
 			dirfs_dropfd(dmp, pathnp, pathfree);
 			return errno;
 		}