if (c->mtd->flags & MTD_NO_VIRTBLOCKS) { vfree(c->blocks); } else { kfree(c->blocks); } 
#ifndef __ECOS if (c->mtd->flags & MTD_NO_VIRTBLOCKS) vfree(c->blocks); else #endif kfree(c->blocks);  
int jffs2_do_mount_fs(struct jffs2_sb_info *c){	int i;	c->free_size = c->flash_size;	c->nr_blocks = c->flash_size / c->sector_size; 	if (c->mtd->flags & MTD_NO_VIRTBLOCKS)		c->blocks = vmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks);	else		c->blocks = kmalloc(sizeof(struct jffs2_eraseblock) * c->nr_blocks, GFP_KERNEL);	if (!c->blocks)		return -ENOMEM;	for (i=0; i<c->nr_blocks; i++) {		INIT_LIST_HEAD(&c->blocks[i].list);		c->blocks[i].offset = i * c->sector_size;		c->blocks[i].free_size = c->sector_size;		c->blocks[i].dirty_size = 0;		c->blocks[i].wasted_size = 0;		c->blocks[i].unchecked_size = 0;		c->blocks[i].used_size = 0;		c->blocks[i].first_node = NULL;		c->blocks[i].last_node = NULL;		c->blocks[i].bad_count = 0;	}	INIT_LIST_HEAD(&c->clean_list);	INIT_LIST_HEAD(&c->very_dirty_list);	INIT_LIST_HEAD(&c->dirty_list);	INIT_LIST_HEAD(&c->erasable_list);	INIT_LIST_HEAD(&c->erasing_list);	INIT_LIST_HEAD(&c->erase_pending_list);	INIT_LIST_HEAD(&c->erasable_pending_wbuf_list);	INIT_LIST_HEAD(&c->erase_complete_list);	INIT_LIST_HEAD(&c->free_list);	INIT_LIST_HEAD(&c->bad_list);	INIT_LIST_HEAD(&c->bad_used_list);	c->highest_ino = 1;	if (jffs2_build_filesystem(c)) {		D1(printk(KERN_DEBUG "build_fs failed\n"));		jffs2_free_ino_caches(c);		jffs2_free_raw_node_refs(c);		if (c->mtd->flags & MTD_NO_VIRTBLOCKS) {			vfree(c->blocks);		} else {			kfree(c->blocks);		}		return -EIO;	}	jffs2_calc_trigger_levels(c);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/737b7661e059680a68afb3df0a088fd976f666b7/build.c/clean/fs/jffs2/build.c