* [PATCH] mtd: rawnand: Fix nand_gpio_waitrdy()
@ 2020-05-18 15:52 Boris Brezillon
2020-05-24 19:10 ` Miquel Raynal
0 siblings, 1 reply; 2+ messages in thread
From: Boris Brezillon @ 2020-05-18 15:52 UTC (permalink / raw)
To: Miquel Raynal, linux-mtd
Cc: Richard Weinberger, Boris Brezillon, Vignesh Raghavendra, stable,
Tudor Ambarus
Mimic what's done in nand_soft_waitrdy() and add one to the jiffies
timeout so we don't end up waiting less than actually required.
Reported-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Fixes: b0e137ad24b6c ("mtd: rawnand: Provide helper for polling GPIO R/B pin")
Cc: <stable@vger.kernel.org>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
drivers/mtd/nand/raw/nand_base.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index 2d2a216af120..169150a7c140 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -790,8 +790,14 @@ EXPORT_SYMBOL_GPL(nand_soft_waitrdy);
int nand_gpio_waitrdy(struct nand_chip *chip, struct gpio_desc *gpiod,
unsigned long timeout_ms)
{
- /* Wait until R/B pin indicates chip is ready or timeout occurs */
- timeout_ms = jiffies + msecs_to_jiffies(timeout_ms);
+
+ /*
+ * Wait until R/B pin indicates chip is ready or timeout occurs.
+ * +1 below is necessary because if we are now in the last fraction
+ * of jiffy and msecs_to_jiffies is 1 then we will wait only that
+ * small jiffy fraction - possibly leading to false timeout.
+ */
+ timeout_ms = jiffies + msecs_to_jiffies(timeout_ms) + 1;
do {
if (gpiod_get_value_cansleep(gpiod))
return 0;
--
2.25.4
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] mtd: rawnand: Fix nand_gpio_waitrdy()
2020-05-18 15:52 [PATCH] mtd: rawnand: Fix nand_gpio_waitrdy() Boris Brezillon
@ 2020-05-24 19:10 ` Miquel Raynal
0 siblings, 0 replies; 2+ messages in thread
From: Miquel Raynal @ 2020-05-24 19:10 UTC (permalink / raw)
To: Boris Brezillon, Miquel Raynal, linux-mtd
Cc: Richard Weinberger, Vignesh Raghavendra, stable, Tudor Ambarus
On Mon, 2020-05-18 at 15:52:37 UTC, Boris Brezillon wrote:
> Mimic what's done in nand_soft_waitrdy() and add one to the jiffies
> timeout so we don't end up waiting less than actually required.
>
> Reported-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> Fixes: b0e137ad24b6c ("mtd: rawnand: Provide helper for polling GPIO R/B pin")
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks.
Miquel
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-05-24 19:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-18 15:52 [PATCH] mtd: rawnand: Fix nand_gpio_waitrdy() Boris Brezillon
2020-05-24 19:10 ` Miquel Raynal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).