ramips: fix kernel oops in `mt7621_nfc_write_page_hwecc`
authorAnton Ryzhov <anton@ryzhov.me>
Sun, 1 Nov 2020 15:06:26 +0000 (16:06 +0100)
committerChuanhong Guo <gch981213@gmail.com>
Wed, 4 Nov 2020 14:08:11 +0000 (22:08 +0800)
`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>
target/linux/ramips/patches-5.4/0300-mtd-rawnand-add-driver-support-for-MT7621-nand-flash.patch

index f65092afb168ab7918b3e34351bd84677d3eba9f..ba844fed0f0e752e79c83c9d306082fc30a7b94b 100644 (file)
@@ -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);