From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Peterson Date: Mon, 23 Feb 2015 14:17:12 -0500 (EST) Subject: [Cluster-devel] [PATCH 1/5] fsck.gfs2: Fix memory leaks in pass1_process_rgrp In-Reply-To: <1424717006-20839-1-git-send-email-anprice@redhat.com> References: <1424717006-20839-1-git-send-email-anprice@redhat.com> Message-ID: <248233502.17923672.1424719032261.JavaMail.zimbra@redhat.com> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit ACK to all five in the series. ----- Original Message ----- > Spotted by coverity: "Variable ibuf going out of scope leaks the storage > it points to" > > Signed-off-by: Andrew Price > --- > gfs2/fsck/pass1.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/gfs2/fsck/pass1.c b/gfs2/fsck/pass1.c > index b516a21..69c88f4 100644 > --- a/gfs2/fsck/pass1.c > +++ b/gfs2/fsck/pass1.c > @@ -1625,7 +1625,10 @@ static int pass1_process_rgrp(struct gfs2_sbd *sdp, > struct rgrp_tree *rgd) > { > unsigned k, n, i; > uint64_t *ibuf = malloc(sdp->bsize * GFS2_NBBY * sizeof(uint64_t)); > - int ret; > + int ret = 0; > + > + if (ibuf == NULL) > + return FSCK_ERROR; > > for (k = 0; k < rgd->ri.ri_length; k++) { > n = lgfs2_bm_scan(rgd, k, ibuf, GFS2_BLKST_DINODE); > @@ -1633,11 +1636,11 @@ static int pass1_process_rgrp(struct gfs2_sbd *sdp, > struct rgrp_tree *rgd) > if (n) { > ret = pass1_process_bitmap(sdp, rgd, ibuf, n); > if (ret) > - return ret; > + goto out; > } > > if (fsck_abort) > - return 0; > + goto out; > /* > For GFS1, we have to count the "free meta" blocks in the > resource group and mark them specially so we can count them > @@ -1650,12 +1653,13 @@ static int pass1_process_rgrp(struct gfs2_sbd *sdp, > struct rgrp_tree *rgd) > for (i = 0; i < n; i++) { > gfs2_blockmap_set(bl, ibuf[i], GFS2_BLKST_UNLINKED); > if (fsck_abort) > - return 0; > + goto out; > } > } > > +out: > free(ibuf); > - return 0; > + return ret; > } > > /** > -- > 1.9.3 > >