Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 May 2013 00:57:23 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r250897 - head/sys/ufs/ffs
Message-ID:  <201305220057.r4M0vNMg040880@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mckusick
Date: Wed May 22 00:57:22 2013
New Revision: 250897
URL: http://svnweb.freebsd.org/changeset/base/250897

Log:
  Add missing buffer releases (brelse) after bread calls that return
  an error. One could argue that returning a buffer even when it is
  not valid is incorrect, but bread has always returned a buffer
  valid or not.
  
  Reviewed by: kib
  MFC after:   2 weeks

Modified:
  head/sys/ufs/ffs/ffs_softdep.c

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c	Wed May 22 00:54:57 2013	(r250896)
+++ head/sys/ufs/ffs/ffs_softdep.c	Wed May 22 00:57:22 2013	(r250897)
@@ -9362,13 +9362,16 @@ clear_unlinked_inodedep(inodedep)
 		if (idp && (idp->id_state & UNLINKNEXT))
 			pino = idp->id_ino;
 		FREE_LOCK(&lk);
-		if (pino == 0)
+		if (pino == 0) {
 			bp = getblk(ump->um_devvp, btodb(fs->fs_sblockloc),
 			    (int)fs->fs_sbsize, 0, 0, 0);
-		else
+		} else {
 			error = bread(ump->um_devvp,
 			    fsbtodb(fs, ino_to_fsba(fs, pino)),
 			    (int)fs->fs_bsize, NOCRED, &bp);
+			if (error)
+				brelse(bp);
+		}
 		ACQUIRE_LOCK(&lk);
 		if (error)
 			break;
@@ -13183,6 +13186,7 @@ softdep_inode_append(ip, cred, wkhd)
 	error = bread(ip->i_devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
 	    (int)fs->fs_bsize, cred, &bp);
 	if (error) {
+		bqrelse(bp);
 		softdep_freework(wkhd);
 		return;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305220057.r4M0vNMg040880>