From: Greg Kroah-Hartman Date: Sat, 15 Apr 2023 18:39:13 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.14.313~55 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d3654a197066a6a0ea0ff1125db166f8900893bd;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: mtdblock-tolerate-corrected-bit-flips.patch --- diff --git a/queue-4.19/mtdblock-tolerate-corrected-bit-flips.patch b/queue-4.19/mtdblock-tolerate-corrected-bit-flips.patch new file mode 100644 index 00000000000..e8ab9291072 --- /dev/null +++ b/queue-4.19/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 +@@ -164,7 +164,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; +@@ -199,8 +199,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; +@@ -220,7 +224,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.19/series b/queue-4.19/series index d3772c940ee..99257435465 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -32,3 +32,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