lkml.org 
[lkml]   [2017]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.18 47/67] mtd: nand: Fix writing mtdoops to nand flash.
    Date
    3.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Brent Taylor <motobud@gmail.com>

    commit 30863e38ebeb500a31cecee8096fb5002677dd9b upstream.

    When mtdoops calls mtd_panic_write(), it eventually calls
    panic_nand_write() in nand_base.c. In order to properly wait for the
    nand chip to be ready in panic_nand_wait(), the chip must first be
    selected.

    When using the atmel nand flash controller, a panic would occur due to
    a NULL pointer exception.

    Fixes: 2af7c6539931 ("mtd: Add panic_write for NAND flashes")
    Signed-off-by: Brent Taylor <motobud@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


    ---
    drivers/mtd/nand/nand_base.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/drivers/mtd/nand/nand_base.c
    +++ b/drivers/mtd/nand/nand_base.c
    @@ -2501,15 +2501,18 @@ static int panic_nand_write(struct mtd_i
    size_t *retlen, const uint8_t *buf)
    {
    struct nand_chip *chip = mtd->priv;
    + int chipnr = (int)(to >> chip->chip_shift);
    struct mtd_oob_ops ops;
    int ret;

    - /* Wait for the device to get ready */
    - panic_nand_wait(mtd, chip, 400);
    -
    /* Grab the device */
    panic_nand_get_device(chip, mtd, FL_WRITING);

    + chip->select_chip(mtd, chipnr);
    +
    + /* Wait for the device to get ready */
    + panic_nand_wait(mtd, chip, 400);
    +
    ops.len = len;
    ops.datbuf = (uint8_t *)buf;
    ops.oobbuf = NULL;

    \
     
     \ /
      Last update: 2017-11-28 13:34    [W:3.970 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site