diff mbox series

[v2,1/2] Fix corner case in bad block table handling.

Message ID 774a92693f311e7de01e5935e720a179fb1b2468.1616635406.git.ytc-mb-yfuruyama7@kioxia.com
State Accepted
Delegated to: Miquel Raynal
Headers show
Series Fix corner case in bad block table handling. | expand

Commit Message

Yoshio Furuyama April 6, 2021, 1:47 a.m. UTC
From: "Doyle, Patrick" <pdoyle@irobot.com>

In the unlikely event that both blocks 10 and 11 are marked as bad (on a
32 bit machine), then the process of marking block 10 as bad stomps on
cached entry for block 11.  There are (of course) other examples.

Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
---
 drivers/mtd/nand/bbt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Miquel Raynal May 10, 2021, 10:52 a.m. UTC | #1
On Tue, 2021-04-06 at 01:47:08 UTC, Yoshio Furuyama wrote:
> From: "Doyle, Patrick" <pdoyle@irobot.com>
> 
> In the unlikely event that both blocks 10 and 11 are marked as bad (on a
> 32 bit machine), then the process of marking block 10 as bad stomps on
> cached entry for block 11.  There are (of course) other examples.
> 
> Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
> Reviewed-by: Richard Weinberger <richard@nod.at>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks.

Miquel
Frieder Schrempf Jan. 11, 2022, 3:33 p.m. UTC | #2
Hi stable maintainers,

On 06.04.21 03:47, Yoshio Furuyama wrote:
> From: "Doyle, Patrick" <pdoyle@irobot.com>
> 
> In the unlikely event that both blocks 10 and 11 are marked as bad (on a
> 32 bit machine), then the process of marking block 10 as bad stomps on
> cached entry for block 11.  There are (of course) other examples.
> 
> Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
> Reviewed-by: Richard Weinberger <richard@nod.at>

We have systems on which this patch fixes real failures. Could you
please add the upstream patch fd0d8d85f723 ("mtd: nand: bbt: Fix corner
case in bad block table handling") to the stable queues for 4.19, 5.4, 5.10?

Thanks!

Cc: stable@vger.kernel.org
Fixes: 9c3736a3de21 ("mtd: nand: Add core infrastructure to deal with
NAND devices")

> ---
>  drivers/mtd/nand/bbt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c
> index 044adf913854..64af6898131d 100644
> --- a/drivers/mtd/nand/bbt.c
> +++ b/drivers/mtd/nand/bbt.c
> @@ -123,7 +123,7 @@ int nanddev_bbt_set_block_status(struct nand_device *nand, unsigned int entry,
>  		unsigned int rbits = bits_per_block + offs - BITS_PER_LONG;
>  
>  		pos[1] &= ~GENMASK(rbits - 1, 0);
> -		pos[1] |= val >> rbits;
> +		pos[1] |= val >> (bits_per_block - rbits);
>  	}
>  
>  	return 0;
Frieder Schrempf Jan. 24, 2022, 2:11 p.m. UTC | #3
Hi Greg, Sasha,

just a gentle ping for the backport request below.

Thanks!

Am 11.01.22 um 16:33 schrieb Frieder Schrempf:
> Hi stable maintainers,
> 
> On 06.04.21 03:47, Yoshio Furuyama wrote:
>> From: "Doyle, Patrick" <pdoyle@irobot.com>
>>
>> In the unlikely event that both blocks 10 and 11 are marked as bad (on a
>> 32 bit machine), then the process of marking block 10 as bad stomps on
>> cached entry for block 11.  There are (of course) other examples.
>>
>> Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
>> Reviewed-by: Richard Weinberger <richard@nod.at>
> 
> We have systems on which this patch fixes real failures. Could you
> please add the upstream patch fd0d8d85f723 ("mtd: nand: bbt: Fix corner
> case in bad block table handling") to the stable queues for 4.19, 5.4, 5.10?
> 
> Thanks!
> 
> Cc: stable@vger.kernel.org
> Fixes: 9c3736a3de21 ("mtd: nand: Add core infrastructure to deal with
> NAND devices")
> 
>> ---
>>  drivers/mtd/nand/bbt.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c
>> index 044adf913854..64af6898131d 100644
>> --- a/drivers/mtd/nand/bbt.c
>> +++ b/drivers/mtd/nand/bbt.c
>> @@ -123,7 +123,7 @@ int nanddev_bbt_set_block_status(struct nand_device *nand, unsigned int entry,
>>  		unsigned int rbits = bits_per_block + offs - BITS_PER_LONG;
>>  
>>  		pos[1] &= ~GENMASK(rbits - 1, 0);
>> -		pos[1] |= val >> rbits;
>> +		pos[1] |= val >> (bits_per_block - rbits);
>>  	}
>>  
>>  	return 0;
gregkh@linuxfoundation.org Jan. 24, 2022, 2:29 p.m. UTC | #4
On Mon, Jan 24, 2022 at 03:11:14PM +0100, Frieder Schrempf wrote:
> Hi Greg, Sasha,
> 
> just a gentle ping for the backport request below.
> 
> Thanks!
> 
> Am 11.01.22 um 16:33 schrieb Frieder Schrempf:
> > Hi stable maintainers,
> > 
> > On 06.04.21 03:47, Yoshio Furuyama wrote:
> >> From: "Doyle, Patrick" <pdoyle@irobot.com>
> >>
> >> In the unlikely event that both blocks 10 and 11 are marked as bad (on a
> >> 32 bit machine), then the process of marking block 10 as bad stomps on
> >> cached entry for block 11.  There are (of course) other examples.
> >>
> >> Signed-off-by: Patrick Doyle <pdoyle@irobot.com>
> >> Reviewed-by: Richard Weinberger <richard@nod.at>
> > 
> > We have systems on which this patch fixes real failures. Could you
> > please add the upstream patch fd0d8d85f723 ("mtd: nand: bbt: Fix corner
> > case in bad block table handling") to the stable queues for 4.19, 5.4, 5.10?
> > 
> > Thanks!
> > 
> > Cc: stable@vger.kernel.org
> > Fixes: 9c3736a3de21 ("mtd: nand: Add core infrastructure to deal with
> > NAND devices")

Odd, I did not see this anywhere in my inbox.

Now queued up, thanks.

greg k-h
diff mbox series

Patch

diff --git a/drivers/mtd/nand/bbt.c b/drivers/mtd/nand/bbt.c
index 044adf913854..64af6898131d 100644
--- a/drivers/mtd/nand/bbt.c
+++ b/drivers/mtd/nand/bbt.c
@@ -123,7 +123,7 @@  int nanddev_bbt_set_block_status(struct nand_device *nand, unsigned int entry,
 		unsigned int rbits = bits_per_block + offs - BITS_PER_LONG;
 
 		pos[1] &= ~GENMASK(rbits - 1, 0);
-		pos[1] |= val >> rbits;
+		pos[1] |= val >> (bits_per_block - rbits);
 	}
 
 	return 0;