Module Name:    src
Committed By:   christos
Date:           Mon Mar 13 22:17:24 UTC 2023

Modified Files:
        src/usr.sbin/makefs/ffs: ffs_alloc.c ffs_balloc.c

Log Message:
Don't brelse() if bread() fails. The kernel does this for us. Our bread()
implementation just exits on failure, but if it didn't we would double-free.
>From Ed Maste (https://reviews.freebsd.org/D39069)


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/usr.sbin/makefs/ffs/ffs_alloc.c
cvs rdiff -u -r1.22 -r1.23 src/usr.sbin/makefs/ffs/ffs_balloc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/makefs/ffs/ffs_alloc.c
diff -u src/usr.sbin/makefs/ffs/ffs_alloc.c:1.31 src/usr.sbin/makefs/ffs/ffs_alloc.c:1.32
--- src/usr.sbin/makefs/ffs/ffs_alloc.c:1.31	Sat Jan  7 14:41:30 2023
+++ src/usr.sbin/makefs/ffs/ffs_alloc.c	Mon Mar 13 18:17:24 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs_alloc.c,v 1.31 2023/01/07 19:41:30 chs Exp $	*/
+/*	$NetBSD: ffs_alloc.c,v 1.32 2023/03/13 22:17:24 christos Exp $	*/
 /* From: NetBSD: ffs_alloc.c,v 1.50 2001/09/06 02:16:01 lukem Exp */
 
 /*
@@ -47,7 +47,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: ffs_alloc.c,v 1.31 2023/01/07 19:41:30 chs Exp $");
+__RCSID("$NetBSD: ffs_alloc.c,v 1.32 2023/03/13 22:17:24 christos Exp $");
 #endif	/* !__lint */
 
 #include <sys/param.h>
@@ -453,7 +453,6 @@ ffs_blkfree(struct inode *ip, daddr_t bn
 	error = bread(ip->i_devvp, FFS_FSBTODB(fs, cgtod(fs, cg)),
 	    (int)fs->fs_cgsize, 0, &bp);
 	if (error) {
-		brelse(bp, 0);
 		return;
 	}
 	cgp = (struct cg *)bp->b_data;

Index: src/usr.sbin/makefs/ffs/ffs_balloc.c
diff -u src/usr.sbin/makefs/ffs/ffs_balloc.c:1.22 src/usr.sbin/makefs/ffs/ffs_balloc.c:1.23
--- src/usr.sbin/makefs/ffs/ffs_balloc.c:1.22	Thu Nov 17 01:40:41 2022
+++ src/usr.sbin/makefs/ffs/ffs_balloc.c	Mon Mar 13 18:17:24 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs_balloc.c,v 1.22 2022/11/17 06:40:41 chs Exp $	*/
+/*	$NetBSD: ffs_balloc.c,v 1.23 2023/03/13 22:17:24 christos Exp $	*/
 /* From NetBSD: ffs_balloc.c,v 1.25 2001/08/08 08:36:36 lukem Exp */
 
 /*
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: ffs_balloc.c,v 1.22 2022/11/17 06:40:41 chs Exp $");
+__RCSID("$NetBSD: ffs_balloc.c,v 1.23 2023/03/13 22:17:24 christos Exp $");
 #endif	/* !__lint */
 
 #include <sys/param.h>
@@ -142,7 +142,6 @@ ffs_balloc_ufs1(struct inode *ip, off_t 
 				error = bread(ip->i_devvp, lbn, fs->fs_bsize,
 				    0, bpp);
 				if (error) {
-					brelse(*bpp, 0);
 					return (error);
 				}
 			}
@@ -168,8 +167,7 @@ ffs_balloc_ufs1(struct inode *ip, off_t 
 					error = bread(ip->i_devvp, lbn, osize,
 					    0, bpp);
 					if (error) {
-						brelse(*bpp, 0);
-						return (error);
+						return error;
 					}
 				}
 				return 0;
@@ -254,7 +252,6 @@ ffs_balloc_ufs1(struct inode *ip, off_t 
 		error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize,
 		    0, &bp);
 		if (error) {
-			brelse(bp, 0);
 			return error;
 		}
 		bap = (int32_t *)bp->b_data;
@@ -324,7 +321,6 @@ ffs_balloc_ufs1(struct inode *ip, off_t 
 	if (bpp != NULL) {
 		error = bread(ip->i_devvp, lbn, (int)fs->fs_bsize, 0, &nbp);
 		if (error) {
-			brelse(nbp, 0);
 			return error;
 		}
 		*bpp = nbp;
@@ -392,7 +388,6 @@ ffs_balloc_ufs2(struct inode *ip, off_t 
 				error = bread(ip->i_devvp, lbn, fs->fs_bsize,
 				    0, bpp);
 				if (error) {
-					brelse(*bpp, 0);
 					return (error);
 				}
 			}
@@ -418,7 +413,6 @@ ffs_balloc_ufs2(struct inode *ip, off_t 
 					error = bread(ip->i_devvp, lbn, osize,
 					    0, bpp);
 					if (error) {
-						brelse(*bpp, 0);
 						return (error);
 					}
 				}
@@ -504,7 +498,6 @@ ffs_balloc_ufs2(struct inode *ip, off_t 
 		error = bread(ip->i_devvp, indirs[i].in_lbn, fs->fs_bsize,
 		    0, &bp);
 		if (error) {
-			brelse(bp, 0);
 			return error;
 		}
 		bap = (int64_t *)bp->b_data;

Reply via email to