Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=b32... Commit: b3279aedde9440e5fd006981542db2bc91f9d15b Parent: c31b42c143250be89c6fc9817bf52d3293a28a05 Author: Bob Peterson rpeterso@redhat.com AuthorDate: Fri Jan 6 17:04:36 2012 -0600 Committer: Bob Peterson rpeterso@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); }
cluster-commits@lists.fedorahosted.org