[U-Boot-Users] NAND drivers bug

Hi,
I refer to the nand driver code in the git and wishes to report some bugs.
1) nand erase <start> <end> The erase operation terminates if a bad block is encountered. It should be
int nand_erase_nand (struct mtd_info *mtd, struct erase_info *instr, int allowbbt) { .... while (len) { #ifndef NAND_ALLOW_ERASE_ALL /* Check if we have a bad block, we do not erase bad blocks ! */ if (nand_block_checkbad(mtd, ((loff_t) page) << this->page_shift, 0, allowbbt)) { #if 0 printk (KERN_WARNING "nand_erase: attempt to erase a bad block at address 0x%08x\n", page * mtd->oobblock); instr->state = MTD_ERASE_FAILED; goto erase_exit; #else /* bad block; ignore */ page += pages_per_block; len -= (1 << this->phys_erase_shift); continue; #endif } #endif
2) nand_write_ecc and/or nand_write_page writes to the nand flash without checking if the block is bad. I believe that in the linux kernel, this checking is taken care of in the fs layer (jffs2/yaffs).
Regards, Terence.
participants (1)
-
Terence Soh