changeset 875:b17faf385ee0

* src/fs-ecos.c Fixed segmentation fault when unmounting file system.
author jlarmour
date Thu, 27 Mar 2003 08:46:29 +0000
parents 62d1a985601c
children 66392c0bb656
files packages/fs/jffs2/current/ChangeLog packages/fs/jffs2/current/src/fs-ecos.c
diffstat 2 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/packages/fs/jffs2/current/ChangeLog
+++ b/packages/fs/jffs2/current/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-25  Thomas Koeller  <thomas.koeller@baslerweb.com>
+
+	* src/fs-ecos.c
+        Fixed segmentation fault when unmounting file system.
+
 2003-02-24  Jonathan Larmour  <jifl@eCosCentric.com>
 
 	* cdl/jffs2.cdl: Fix doc link.
--- a/packages/fs/jffs2/current/src/fs-ecos.c
+++ b/packages/fs/jffs2/current/src/fs-ecos.c
@@ -190,7 +190,7 @@ static void icache_evict(struct inode *r
 		     cached_inode = next_inode) {
 			next_inode = cached_inode->i_cache_next;
 			if (cached_inode->i_count == 0) {
-				cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next;	// Prveious entry points ahead of us
+				cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next;	// Previous entry points ahead of us
 				if (cached_inode->i_cache_next != NULL)
 					cached_inode->i_cache_next->i_cache_prev = cached_inode->i_cache_prev;	// Next entry points behind us
 				jffs2_clear_inode(cached_inode);
@@ -1759,9 +1759,11 @@ void iput(struct inode *i)
 		for (cached_inode = i->i_sb->s_root; cached_inode != NULL;
 		     cached_inode = cached_inode->i_cache_next) {
 			if (cached_inode == i) {
-				cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next;	// Prveious entry points ahead of us
-				if (cached_inode->i_cache_next != NULL)
-					cached_inode->i_cache_next->i_cache_prev = cached_inode->i_cache_prev;	// Next entry points behind us
+                                if(cached_inode->i_cache_prev != NULL) {
+				        cached_inode->i_cache_prev->i_cache_next = cached_inode->i_cache_next;	// Previous entry points ahead of us
+				        if (cached_inode->i_cache_next != NULL)
+					        cached_inode->i_cache_next->i_cache_prev = cached_inode->i_cache_prev;	// Next entry points behind us
+                                }
 				break;
 			}
 		}