aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Ryzhov <anton@ryzhov.me>2020-11-01 16:06:26 +0100
committerChuanhong Guo <gch981213@gmail.com>2020-11-04 22:08:11 +0800
commitdf469befdc4c13d260b99f3a1e15bc418a429020 (patch)
tree55afe2c535f2909381b6761c2a8d29f0cc0b0150
parentbe09c5a3cd6535ccfc6b1628546c0416d94bd131 (diff)
downloadupstream-df469befdc4c13d260b99f3a1e15bc418a429020.tar.gz
upstream-df469befdc4c13d260b99f3a1e15bc418a429020.tar.bz2
upstream-df469befdc4c13d260b99f3a1e15bc418a429020.zip
ramips: fix kernel oops in `mt7621_nfc_write_page_hwecc`
`mt7621_nfc_write_page_hwecc` may be called with `buf=NULL`, but `mt7621_nfc_check_empty_page` always tries to read it. That caused Oops: `Unable to handle kernel paging request at virtual address 00000000` Fixes: FS#3416 Signed-off-by: Anton Ryzhov <anton@ryzhov.me>
-rw-r--r--target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch10
1 files changed, 6 insertions, 4 deletions
diff --git a/target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch b/target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch
index f65092afb1..ba844fed0f 100644
--- a/target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch
+++ b/target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch
@@ -47,7 +47,7 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
obj-$(CONFIG_MTD_NAND_TEGRA) += tegra_nand.o
--- /dev/null
+++ b/drivers/mtd/nand/raw/mt7621_nand.c
-@@ -0,0 +1,1348 @@
+@@ -0,0 +1,1350 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * MediaTek MT7621 NAND Flash Controller driver
@@ -1155,9 +1155,11 @@ Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
+ uint32_t i, j;
+ u8 *oobptr;
+
-+ for (i = 0; i < mtd->writesize; i++)
-+ if (buf[i] != 0xff)
-+ return 0;
++ if (buf) {
++ for (i = 0; i < mtd->writesize; i++)
++ if (buf[i] != 0xff)
++ return 0;
++ }
+
+ for (i = 0; i < nand->ecc.steps; i++) {
+ oobptr = oob_fdm_ptr(nand, i);