[PATCH] Fix OOB_READ bug where hardware FIFO is not drained completely. Fix potential bug for non-ECC operations.

Sean Nyekjær sean.nyekjaer at prevas.dk
Tue Dec 12 02:14:28 PST 2017


Hi Greg
> Signed-off-by: Greg Cook <greg at morpheus.ws>
Tested-by: Sean Nyekjaer <sean.nyekjaer at prevas.dk>
> ---
>   drivers/mtd/nand/pxa3xx_nand.c | 9 +++++++--
>   1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
> index 021374f..cfa8c71 100644
> --- a/drivers/mtd/nand/pxa3xx_nand.c
> +++ b/drivers/mtd/nand/pxa3xx_nand.c
> @@ -677,7 +677,7 @@ static void disable_int(struct pxa3xx_nand_info *info, uint32_t int_mask)
>   
>   static void drain_fifo(struct pxa3xx_nand_info *info, void *data, int len)
>   {
> -	if (info->ecc_bch) {
> +	if (info->use_ecc && info->ecc_bch) {
>   		u32 val;
>   		int ret;
>   
> @@ -1023,7 +1023,12 @@ static int prepare_set_command(struct pxa3xx_nand_info *info, int command,
>   
>   		if (info->cur_chunk < info->nfullchunks) {
>   			info->step_chunk_size = info->chunk_size;
> -			info->step_spare_size = info->spare_size;
> +			if (info->use_ecc) {
> +				info->step_spare_size = info->spare_size;
> +			} else {
> +				info->step_spare_size = info->spare_size
> +							+ info->ecc_size;
> +			}
>   		} else {
>   			info->step_chunk_size = info->last_chunk_size;
>   			info->step_spare_size = info->last_spare_size;
Please change the subject to something shorter like:
mtd: nand: pxa3xx: fix READOOB when hardware FIFO is not drained completely
Fix potential bug for non-ECC operations.

/Sean



More information about the linux-mtd mailing list