This patch makes nand_block_checkbad check both the BBT and the actual OOB data. This avoids accidently passing blocks as good when BBT and OOB markers are not synchronized, e.g., before "nand createbbt". Experimental. - Werner Almesberger Index: u-boot/drivers/nand/nand_base.c =================================================================== --- u-boot.orig/drivers/nand/nand_base.c +++ u-boot/drivers/nand/nand_base.c @@ -517,11 +517,14 @@ static int nand_block_checkbad (struct m { struct nand_chip *this = mtd->priv; - if (!this->bbt) - return this->block_bad(mtd, ofs, getchip); + if (this->block_bad(mtd, ofs, getchip)) + return 1; /* Return info from the table */ - return nand_isbad_bbt (mtd, ofs, allowbbt); + if (this->bbt && nand_isbad_bbt (mtd, ofs, allowbbt)) + return 1; + + return 0; } /**