[PATCH] mtd: inftlcore: Add error check for inftl_read_oob()

Wentao Liang posted 1 patch 10 months, 1 week ago
drivers/mtd/inftlcore.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
[PATCH] mtd: inftlcore: Add error check for inftl_read_oob()
Posted by Wentao Liang 10 months, 1 week ago
In INFTL_findwriteunit(), the return value of inftl_read_oob()
need to be checked. A proper implementation can be
found in INFTL_deleteblock(). The status will be set as
SECTOR_IGNORE to break from the while-loop correctly
if the inftl_read_oob() fails.

Fixes: 8593fbc68b0d ("[MTD] Rework the out of band handling completely")
Cc: stable@vger.kernel.org # v2.6+
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/mtd/inftlcore.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/inftlcore.c b/drivers/mtd/inftlcore.c
index 9739387cff8c..58c6e1743f5c 100644
--- a/drivers/mtd/inftlcore.c
+++ b/drivers/mtd/inftlcore.c
@@ -482,10 +482,11 @@ static inline u16 INFTL_findwriteunit(struct INFTLrecord *inftl, unsigned block)
 		silly = MAX_LOOPS;
 
 		while (thisEUN <= inftl->lastEUN) {
-			inftl_read_oob(mtd, (thisEUN * inftl->EraseSize) +
-				       blockofs, 8, &retlen, (char *)&bci);
-
-			status = bci.Status | bci.Status1;
+			if (inftl_read_oob(mtd, (thisEUN * inftl->EraseSize) +
+				       blockofs, 8, &retlen, (char *)&bci) < 0)
+				status = SECTOR_IGNORE;
+			else
+				status = bci.Status | bci.Status1;
 			pr_debug("INFTL: status of block %d in EUN %d is %x\n",
 					block , writeEUN, status);
 
-- 
2.42.0.windows.2
Re: [PATCH] mtd: inftlcore: Add error check for inftl_read_oob()
Posted by Miquel Raynal 10 months ago
On Wed, 02 Apr 2025 11:16:43 +0800, Wentao Liang wrote:
> In INFTL_findwriteunit(), the return value of inftl_read_oob()
> need to be checked. A proper implementation can be
> found in INFTL_deleteblock(). The status will be set as
> SECTOR_IGNORE to break from the while-loop correctly
> if the inftl_read_oob() fails.
> 
> 
> [...]

Applied to mtd/fixes, thanks!

[1/1] mtd: inftlcore: Add error check for inftl_read_oob()
      commit: d027951dc85cb2e15924c980dc22a6754d100c7c

Patche(s) should be available on mtd/linux.git and will be
part of the next PR (provided that no robot complains by then).

Kind regards,
Miquèl