From: Greg Kroah-Hartman Date: Sat, 15 Apr 2023 18:39:04 +0000 (+0200) Subject: 4.14-stable patches X-Git-Tag: v4.14.313~56 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1194d37130a951d59b4ba869158a170c448bb03b;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: mtdblock-tolerate-corrected-bit-flips.patch --- diff --git a/queue-4.14/mtdblock-tolerate-corrected-bit-flips.patch b/queue-4.14/mtdblock-tolerate-corrected-bit-flips.patch new file mode 100644 index 00000000000..07dbe38e601 --- /dev/null +++ b/queue-4.14/mtdblock-tolerate-corrected-bit-flips.patch @@ -0,0 +1,58 @@ +From 0c3089601f064d80b3838eceb711fcac04bceaad Mon Sep 17 00:00:00 2001 +From: Bang Li +Date: Wed, 29 Mar 2023 00:30:12 +0800 +Subject: mtdblock: tolerate corrected bit-flips + +From: Bang Li + +commit 0c3089601f064d80b3838eceb711fcac04bceaad upstream. + +mtd_read() may return -EUCLEAN in case of corrected bit-flips.This +particular condition should not be treated like an error. + +Signed-off-by: Bang Li +Fixes: e47f68587b82 ("mtd: check for max_bitflips in mtd_read_oob()") +Cc: # v3.7 +Acked-by: Richard Weinberger +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20230328163012.4264-1-libang.linuxer@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/mtdblock.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +--- a/drivers/mtd/mtdblock.c ++++ b/drivers/mtd/mtdblock.c +@@ -185,7 +185,7 @@ static int do_cached_write (struct mtdbl + mtdblk->cache_state = STATE_EMPTY; + ret = mtd_read(mtd, sect_start, sect_size, + &retlen, mtdblk->cache_data); +- if (ret) ++ if (ret && !mtd_is_bitflip(ret)) + return ret; + if (retlen != sect_size) + return -EIO; +@@ -220,8 +220,12 @@ static int do_cached_read (struct mtdblk + pr_debug("mtdblock: read on \"%s\" at 0x%lx, size 0x%x\n", + mtd->name, pos, len); + +- if (!sect_size) +- return mtd_read(mtd, pos, len, &retlen, buf); ++ if (!sect_size) { ++ ret = mtd_read(mtd, pos, len, &retlen, buf); ++ if (ret && !mtd_is_bitflip(ret)) ++ return ret; ++ return 0; ++ } + + while (len > 0) { + unsigned long sect_start = (pos/sect_size)*sect_size; +@@ -241,7 +245,7 @@ static int do_cached_read (struct mtdblk + memcpy (buf, mtdblk->cache_data + offset, size); + } else { + ret = mtd_read(mtd, pos, size, &retlen, buf); +- if (ret) ++ if (ret && !mtd_is_bitflip(ret)) + return ret; + if (retlen != size) + return -EIO; diff --git a/queue-4.14/series b/queue-4.14/series index 5e7cddb839b..80c051bb2e0 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -20,3 +20,4 @@ alsa-i2c-cs8427-fix-iec958-mixer-control-deactivation.patch alsa-hda-sigmatel-fix-s-pdif-out-on-intel-d-45-motherboards.patch bluetooth-l2cap-fix-use-after-free-in-l2cap_disconnect_-req-rsp.patch bluetooth-fix-race-condition-in-hidp_session_thread.patch +mtdblock-tolerate-corrected-bit-flips.patch