⬢ DragonFlyBSD Kernel Audit
DF-3145 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/hpfs/hpfs_subr.c
+++ b/sys/vfs/hpfs/hpfs_subr.c
@@ -282,11 +282,13 @@ hpfs_cpinit (
 	while (cpicnt > 0) {
 		error = bread(hpmp->hpm_devvp, dbtodoff(lsn), DEV_BSIZE, &bp);
 		if (error) {
 			brelse(bp);
+			kfree(hpmp->hpm_cpdblk, M_HPFSMNT);
+			hpmp->hpm_cpdblk = NULL;
 			return (error);
 		}
@@ -298,10 +300,12 @@ hpfs_cpinit (
 			error = hpfs_cpload(hpmp, cpibp, cpdbp);
 			if (error) {
 				brelse(bp);
+				kfree(hpmp->hpm_cpdblk, M_HPFSMNT);
+				hpmp->hpm_cpdblk = NULL;
 				return (error);
 			}