Gitweb: http://git.fedorahosted.org/git/gfs2-utils.git?p=gfs2-utils.git;a=commitdiff... Commit: 02adf68abe793100cf123cb83989200500331340 Parent: b1cda3608ee07e70665a0ac6ce3689bfced1439a Author: Bob Peterson rpeterso@redhat.com AuthorDate: Tue Aug 30 13:00:42 2011 -0500 Committer: Bob Peterson rpeterso@redhat.com CommitterDate: Tue Aug 30 14:08:06 2011 -0500
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 02bd629..3a0e45e 100644 --- a/gfs2/edit/savemeta.c +++ b/gfs2/edit/savemeta.c @@ -134,6 +134,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);*/ @@ -492,7 +493,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 */ @@ -810,6 +814,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); }
@@ -1034,6 +1040,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