mtd: rawnand: onfi: Fix redundancy detection check
commit1d5d08ee9b
upstream. During ONFI detection, the CRC derived from the parameter page and the CRC supposed to be at the end of the parameter page are compared. If they do not match, the second then the third copies of the page are tried. The current implementation compares the newly derived CRC with the CRC contained in the first page only. So if this particular CRC area has been corrupted, then the detection will fail for a wrong reason. Fix this issue by checking the derived CRC against the right one. Fixes:39138c1f4a
("mtd: rawnand: use bit-wise majority to recover the ONFI param page") Cc: stable@vger.kernel.org Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://lore.kernel.org/linux-mtd/20200428094302.14624-4-miquel.raynal@bootlin.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
869a782420
commit
ba4ffbb559
|
@ -173,7 +173,7 @@ int nand_onfi_detect(struct nand_chip *chip)
|
|||
}
|
||||
|
||||
if (onfi_crc16(ONFI_CRC_BASE, (u8 *)&p[i], 254) ==
|
||||
le16_to_cpu(p->crc)) {
|
||||
le16_to_cpu(p[i].crc)) {
|
||||
if (i)
|
||||
memcpy(p, &p[i], sizeof(*p));
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue