changeset 1816:658319b65ae3

* src/fs-ecos.c (jffs2_open): Call iput on dir node if jffs2_create fails. * src/fs-ecos.c (jffs2_umount): use jffs2_free_full_dirent instead of free.
author asl
date Thu, 21 Oct 2004 18:13:44 +0000
parents 9e7b53448092
children df5dcf4cdc1a
files packages/fs/jffs2/current/ChangeLog packages/fs/jffs2/current/src/fs-ecos.c
diffstat 2 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/packages/fs/jffs2/current/ChangeLog
+++ b/packages/fs/jffs2/current/ChangeLog
@@ -1,3 +1,10 @@
+2004-10-20  Per Hedblom  <perhedblom@abem.se>
+
+	* src/fs-ecos.c (jffs2_open): Call iput on dir node if
+	jffs2_create fails.
+	* src/fs-ecos.c (jffs2_umount): use jffs2_free_full_dirent instead
+	of free.
+
 2004-10-07  Knud Woehler <knud.woehler@microplex.de>
 
 	* src/fs-ecos.c (find_entry): jffs2_lookup may return error codes.
--- a/packages/fs/jffs2/current/src/fs-ecos.c
+++ b/packages/fs/jffs2/current/src/fs-ecos.c
@@ -647,7 +647,7 @@ static int jffs2_umount(cyg_mtab_entry *
 		// free directory entries
 		for (fd = root->jffs2_i.dents; fd; fd = next) {
 		  next=fd->next;
-		  free(fd);
+		  jffs2_free_full_dirent(fd);
 		}
 
 		free(root);
@@ -714,8 +714,9 @@ static int jffs2_open(cyg_mtab_entry * m
 			err = jffs2_create(ds.dir, ds.name, S_IRUGO|S_IXUGO|S_IWUSR|S_IFREG, &node);
 
 			if (err != 0) {
-				//Possible orphaned inode on the flash - but will be gc'd
-				return err;
+                                //Possible orphaned inode on the flash - but will be gc'd
+                          	jffs2_iput(ds.dir);
+                                return err;
 			}
 
 			err = ENOERR;