changeset 1547:008dfd864e5e

* src/fs-ecos.c: Fixed umount memory leak. root->jffs2_i.dents where not freed.
author asl
date Mon, 15 Mar 2004 17:03:44 +0000
parents b6cb710a33b6
children 92d4feb4957e
files packages/fs/jffs2/current/ChangeLog packages/fs/jffs2/current/src/fs-ecos.c
diffstat 2 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/packages/fs/jffs2/current/ChangeLog
+++ b/packages/fs/jffs2/current/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-11  Oyvind Harboe <oyvind.harboe@zylin.com>
+	
+	* src/fs-ecos.c:
+	  Fixed umount memory leak. root->jffs2_i.dents where not freed.
+	
 2004-02-20  Vincent Catros  <Vincent.Catros@elios-informatique.fr>
 
 	* src/fs-ecos.c :
--- a/packages/fs/jffs2/current/src/fs-ecos.c
+++ b/packages/fs/jffs2/current/src/fs-ecos.c
@@ -592,6 +592,7 @@ static int jffs2_umount(cyg_mtab_entry *
 	struct _inode *root = (struct _inode *) mte->root;
 	struct super_block *jffs2_sb = root->i_sb;
 	struct jffs2_sb_info *c = JFFS2_SB_INFO(jffs2_sb);
+        struct jffs2_full_dirent *fd, *next;
 
 	D2(printf("jffs2_umount\n"));
 
@@ -635,6 +636,13 @@ static int jffs2_umount(cyg_mtab_entry *
 		jffs2_stop_garbage_collect_thread(c);
 #endif
 		jffs2_iput(root);	// Time to free the root inode
+
+		// free directory entries
+		for (fd = root->jffs2_i.dents; fd; fd = next) {
+		  next=fd->next;
+		  free(fd);
+		}
+
 		free(root);
 		//Clear root inode
 		//root_i = NULL;