- YCHAR *clonedName = YMALLOC(sizeof(YCHAR) * (yaffs_strnlen(name,YAFFS_MAX_NAME_LENGTH)+1));
- struct yaffs_dev_s *dev = YMALLOC(sizeof(struct yaffs_dev_s));
-
- if(dev && clonedName){
- memset(dev,0,sizeof(struct yaffs_dev_s));
- yaffs_strcpy(clonedName,name);
-
- dev->param.name = clonedName;
- dev->param.write_chunk_tags_fn = ynandif_WriteChunkWithTagsToNAND;
- dev->param.read_chunk_tags_fn = ynandif_ReadChunkWithTagsFromNAND;
- dev->param.erase_fn = ynandif_EraseBlockInNAND;
- dev->param.initialise_flash_fn = ynandif_InitialiseNAND;
- dev->param.query_block_fn = ynandif_QueryNANDBlock;
- dev->param.bad_block_fn = ynandif_MarkNANDBlockBad;
- dev->param.n_caches = 20;
- dev->param.start_block = geometry->start_block;
- dev->param.end_block = geometry->end_block;
- dev->param.total_bytes_per_chunk = geometry->dataSize;
- dev->param.spare_bytes_per_chunk = geometry->spareSize;
- dev->param.inband_tags = geometry->inband_tags;
- dev->param.chunks_per_block = geometry->pagesPerBlock;
- dev->param.use_nand_ecc = geometry->hasECC;
- dev->param.is_yaffs2 = geometry->useYaffs2;
- dev->param.n_reserved_blocks = 5;
- dev->driver_context = (void *)geometry;
+ YCHAR *clonedName = malloc(sizeof(YCHAR) *
+ (strnlen(name, YAFFS_MAX_NAME_LENGTH)+1));
+ struct yaffs_dev *dev = malloc(sizeof(struct yaffs_dev));
+ struct yaffs_param *param;
+
+ if (dev && clonedName) {
+ memset(dev, 0, sizeof(struct yaffs_dev));
+ strcpy(clonedName, name);
+
+ param = &dev->param;
+
+ param->name = clonedName;
+ param->write_chunk_tags_fn = ynandif_WriteChunkWithTagsToNAND;
+ param->read_chunk_tags_fn = ynandif_ReadChunkWithTagsFromNAND;
+ param->erase_fn = ynandif_EraseBlockInNAND;
+ param->initialise_flash_fn = ynandif_InitialiseNAND;
+ param->query_block_fn = ynandif_QueryNANDBlock;
+ param->bad_block_fn = ynandif_MarkNANDBlockBad;
+ param->n_caches = 20;
+ param->start_block = geometry->start_block;
+ param->end_block = geometry->end_block;
+ param->total_bytes_per_chunk = geometry->dataSize;
+ param->spare_bytes_per_chunk = geometry->spareSize;
+ param->inband_tags = geometry->inband_tags;
+ param->chunks_per_block = geometry->pagesPerBlock;
+ param->use_nand_ecc = geometry->hasECC;
+ param->is_yaffs2 = geometry->useYaffs2;
+ param->n_reserved_blocks = 5;
+ dev->driver_context = (void *)geometry;