cluster: RHEL6 - gfs2_edit: Fix memory leaks

Bob Peterson rpeterso at fedoraproject.org
Tue Jan 24 20:46:06 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=b3279aedde9440e5fd006981542db2bc91f9d15b
Commit:        b3279aedde9440e5fd006981542db2bc91f9d15b
Parent:        c31b42c143250be89c6fc9817bf52d3293a28a05
Author:        Bob Peterson <rpeterso at redhat.com>
AuthorDate:    Fri Jan 6 17:04:36 2012 -0600
Committer:     Bob Peterson <rpeterso at redhat.com>
CommitterDate: Fri Jan 20 08:26:28 2012 -0600

gfs2_edit: Fix memory leaks

This patch plugs a couple memory leaks found by valgrind.

rhbz#675723
---
 gfs2/edit/savemeta.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 33f2970..1b9d0a8 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -132,6 +132,7 @@ static int get_gfs_struct_info(struct gfs2_buffer_head *lbh, int *block_type,
 			*gstruct_len = sizeof(struct gfs2_dinode);
 		else
 			*gstruct_len = sbd.bsize;
+		inode_put(&inode);
 		break;
 	case GFS2_METATYPE_IN:   /* 5 (indir inode blklst) */
 		*gstruct_len = sbd.bsize; /*sizeof(struct gfs_indirect);*/
@@ -490,7 +491,10 @@ static void save_inode_data(struct metafd *mfd)
 			mybh = osi_list_entry(cur_list->next,
 					    struct gfs2_buffer_head,
 					    b_altlist);
-			osi_list_del(&mybh->b_altlist);
+			if (mybh == inode->i_bh)
+				osi_list_del(&mybh->b_altlist);
+			else
+				brelse(mybh);
 		}
 	}
 	/* Process directory exhash inodes */
@@ -808,6 +812,8 @@ void savemeta(char *out_fn, int saveoption, int gziplevel)
 	free(savedata);
 	savemetaclose(&mfd);
 	close(sbd.device_fd);
+	free(indirect);
+	gfs2_rgrp_free(&sbd.rgtree);
 	exit(0);
 }
 
@@ -1032,6 +1038,6 @@ void restoremeta(const char *in_fn, const char *out_device,
 	gzclose(gzfd);
 	if (!printblocksonly)
 		close(sbd.device_fd);
-
+	free(indirect);
 	exit(error);
 }


More information about the cluster-commits mailing list