diff options
author | Anton Ryzhov <anton@ryzhov.me> | 2020-11-01 16:06:26 +0100 |
---|---|---|
committer | Chuanhong Guo <gch981213@gmail.com> | 2020-11-04 22:08:11 +0800 |
commit | df469befdc4c13d260b99f3a1e15bc418a429020 (patch) | |
tree | 55afe2c535f2909381b6761c2a8d29f0cc0b0150 | |
parent | be09c5a3cd6535ccfc6b1628546c0416d94bd131 (diff) | |
download | upstream-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.patch | 10 |
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); |