⬢ DragonFlyBSD Kernel Audit
DF-2992 / fix.diff
← back to finding ↓ download raw
--- a/sys/vfs/ufs/ffs_softdep.c
+++ b/sys/vfs/ufs/ffs_softdep.c
@@ -2166,7 +2166,7 @@
 		if ((bn = freeblks->fb_iblks[level]) == 0)
 			continue;
 		if ((error = indir_trunc(&tip, fsbtodoff(fs, bn), level,
-		    baselbns[level], &blocksreleased)) == 0)
+		    baselbns[level], &blocksreleased)) != 0)
 			allerror = error;
 		ffs_blkfree(&tip, bn, fs->fs_bsize);
 		blocksreleased += nblocks;
@@ -4652,11 +4652,14 @@
 		 * push them to disk.
 		 */
 		if ((inodedep->id_state & DEPCOMPLETE) == 0) {
+			struct buf *ibp;
+
 			gotit = getdirtybuf(&inodedep->id_buf, MNT_WAIT);
 			if (gotit == 0)
 				goto retry_lookup;
+			ibp = inodedep->id_buf;
 			FREE_LOCK(&lk);
-			if (gotit && (error = bwrite(inodedep->id_buf)) != 0)
+			if (gotit && (error = bwrite(ibp)) != 0)
 				break;
 			ACQUIRE_LOCK(&lk);
 			if (dap != LIST_FIRST(diraddhdp))