nand_flash_detect_onfi error
Renaud Barbier
renaud.barbier at ge.com
Tue Nov 3 08:27:32 PST 2015
In the file drivers/mtd/nand/nand_base.c, in function
nand_flash_detect_onfi reading the ONFI data can be run up to 3 times
when there is a CRC error detected in the onfi data:
The function call chip->cmdfunc(mtd, NAND_CMD_PARAM, 0, -1); is located
outside the first for loop:
chip->cmdfunc(mtd, NAND_CMD_PARAM, 0, -1);
for (i = 0; i < 3; i++) {
for (j = 0; j < sizeof(*p); j++)
((uint8_t *)p)[j] = chip->read_byte(mtd);
if (onfi_crc16(ONFI_CRC_BASE, (uint8_t *)p, 254) ==
le16_to_cpu(p->crc)) {
break;
}
}
This results in a read beyond buffer error if the data have to be read
more than once.
This error can also be found in U-boot and barebox.
More information about the linux-mtd
mailing list