lkml.org 
[lkml]   [2020]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.7 353/376] mtd: rawnand: onfi: Fix redundancy detection check
    Date
    From: Miquel Raynal <miquel.raynal@bootlin.com>

    commit 1d5d08ee9b28cff907326b4ad5a2463fd2808be1 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: 39138c1f4a31 ("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>

    ---
    drivers/mtd/nand/raw/nand_onfi.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/mtd/nand/raw/nand_onfi.c
    +++ b/drivers/mtd/nand/raw/nand_onfi.c
    @@ -173,7 +173,7 @@ int nand_onfi_detect(struct nand_chip *c
    }

    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;

    \
     
     \ /
      Last update: 2020-06-19 17:55    [W:2.465 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site