if (f->dents) { kfree(f->dents); f->dents = NULL; } 
kfree(f->dents); f->dents = NULL; 
void jffs2_do_clear_inode(struct jffs2_sb_info *c, struct jffs2_inode_info *f){	struct jffs2_full_dirent *fd, *fds;	int deleted;	down(&f->sem);	deleted = f->inocache && !f->inocache->nlink;	if (f->inocache && f->inocache->state != INO_STATE_CHECKING)		jffs2_set_inocache_state(c, f->inocache, INO_STATE_CLEARING);	if (f->metadata) {		if (deleted)			jffs2_mark_node_obsolete(c, f->metadata->raw);		jffs2_free_full_dnode(f->metadata);	}	jffs2_kill_fragtree(&f->fragtree, deleted?c:NULL);	/* For symlink inodes we us f->dents to store the target path name */	if (S_ISLNK(OFNI_EDONI_2SFFJ(f)->i_mode)) {		if (f->dents) {			kfree(f->dents);			f->dents = NULL;		}	} else {		fds = f->dents;		while(fds) {			fd = fds;			fds = fd->next;			jffs2_free_full_dirent(fd);		}	}	if (f->inocache && f->inocache->state != INO_STATE_CHECKING) {		jffs2_set_inocache_state(c, f->inocache, INO_STATE_CHECKEDABSENT);		if (f->inocache->nodes == (void *)f->inocache)			jffs2_del_ino_cache(c, f->inocache);	}	up(&f->sem);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f99d49adf527fa6f7a9c42257fa76bca6b8df1e3/readinode.c/clean/fs/jffs2/readinode.c