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;