[PATCH] Enable the read ECC before program the page

Greg KH gregkh at linuxfoundation.org
Wed Sep 13 12:04:25 PDT 2017


On Wed, Sep 13, 2017 at 02:34:53PM -0400, Arun Nagendran wrote:
> Current program_page function did following operation:
> 
> 1. read page (with ECC OFF)
> 2. modify the page
> 3. write the page (with ECC ON)
> 
> For some case(buggy flash Chip), while read the page without ECC ON,
> we may read the page with bit flip error and modify that bad page without
> knowing the bit flip error on that page.
> also we re-calculate the hash for bad page and write it.
> This could bring potential in-consistency problem with Flash data.
> 
> Verify this logic with GIGA DEVICE Part(GD5F2GQ4RCFIG):
> we see this in-conststency problem wit Giga Device and fix on
> this patch resovle that issue.
> ---
>  drivers/staging/mt29f_spinand/mt29f_spinand.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/mt29f_spinand/mt29f_spinand.c b/drivers/staging/mt29f_spinand/mt29f_spinand.c
> index a4e3ae8..202d222 100644
> --- a/drivers/staging/mt29f_spinand/mt29f_spinand.c
> +++ b/drivers/staging/mt29f_spinand/mt29f_spinand.c
> @@ -496,8 +496,13 @@ static int spinand_program_page(struct spi_device *spi_nand,
>  	if (!wbuf)
>  		return -ENOMEM;
>  
> -	enable_read_hw_ecc = 0;
> -	spinand_read_page(spi_nand, page_id, 0, CACHE_BUF, wbuf);
> +	enable_read_hw_ecc = 1;
> +	retval = spinand_read_page(spi_nand, page_id, 0, CACHE_BUF, wbuf);
> +	if( retval < 0 )
> +	{
> +		dev_err(&spi_nand->dev, "ecc error on read page!!!\n");
> +		return retval;
> +	}

Always use scripts/checkpatch.pl so you don't get grumpy maintainers
telling you to use scripts/checkpatch.pl :(



More information about the linux-mtd mailing list