linux/drivers/mtd/nand
Roger Quadros 739c64414f mtd: nand: omap2: Fix subpage write
Since v4.12, NAND subpage writes were causing a NULL pointer
dereference on OMAP platforms (omap2-nand) using OMAP_ECC_BCH4_CODE_HW,
OMAP_ECC_BCH8_CODE_HW and OMAP_ECC_BCH16_CODE_HW.

This is because for those ECC modes, omap_calculate_ecc_bch()
generates ECC bytes for the entire (multi-sector) page and this can
overflow the ECC buffer provided by nand_write_subpage_hwecc()
as it expects ecc.calculate() to return ECC bytes for just one sector.

However, the root cause of the problem is present since v3.9
but was not seen then as NAND buffers were being allocated
as one big chunk prior to commit 3deb9979c7 ("mtd: nand: allocate
aligned buffers if NAND_OWN_BUFFERS is unset").

Fix the issue by providing a OMAP optimized write_subpage()
implementation.

Fixes: 62116e5171 ("mtd: nand: omap2: Support for hardware BCH error correction.")
Cc: <stable@vger.kernel.org>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
2017-10-27 16:53:23 +02:00
..
atmel mtd: nand: atmel: Actually use the PM ops 2017-10-14 15:15:13 +02:00
bcm47xxnflash mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
brcmnand mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
gpmi-nand mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
ams-delta.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
au1550nd.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
bf5xx_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cafe_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cmx270_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cs553x_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
davinci_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
denali_dt.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali_pci.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali.c mtd: nand: denali: fix setup_data_interface to meet tCCS delay 2017-10-07 11:28:06 +02:00
denali.h mtd: nand: denali: change the setup_dma choice into hook 2017-09-22 09:04:40 +02:00
diskonchip.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
docg4.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_elbc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_ifc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_upm.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsmc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
gpio.c mtd: nand: gpio: Convert to use GPIO descriptors 2017-10-07 11:27:48 +02:00
hisi504_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
jz4740_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
jz4780_bch.c mtd: nand: jz4780: Update MODULE_AUTHOR email address 2016-07-11 08:40:19 +02:00
jz4780_bch.h mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs 2016-01-07 09:35:11 -08:00
jz4780_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
Kconfig mtd: nand: pxa3xx_nand: Update Kconfig information 2017-10-07 11:28:06 +02:00
lpc32xx_mlc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
lpc32xx_slc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
Makefile mtd: nand: Cleanup/rework the atmel_nand driver 2017-04-25 14:18:29 +02:00
mpc5121_nfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mtk_ecc.c mtd: nand: mtk: fix error return code in mtk_ecc_probe() 2017-08-23 16:49:23 +02:00
mtk_ecc.h mtd: nand: mediatek: add support for different MTK NAND FLASH Controller IP 2017-06-01 10:09:37 +02:00
mtk_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mxc_nand.c mtd: nand: mxc: use dev_dbg to print debug messages 2017-10-16 17:57:08 +02:00
nand_amd.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_base.c mtd: nand: Export nand_reset() symbol 2017-10-14 15:15:10 +02:00
nand_bbt.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_bch.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_ecc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_hynix.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
nand_ids.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_macronix.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_micron.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_samsung.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_timings.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
nand_toshiba.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nandsim.c Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2017-09-14 18:13:32 -07:00
ndfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nuc900_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
omap2.c mtd: nand: omap2: Fix subpage write 2017-10-27 16:53:23 +02:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
oxnas_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
pasemi_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
plat_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
pxa3xx_nand.c mtd: nand: pxa3xx: enable NAND controller if the SoC needs it 2017-10-07 11:28:07 +02:00
qcom_nandc.c mtd: nand: qcom: support for command descriptor formation 2017-10-07 11:28:05 +02:00
r852.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
r852.h mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
s3c2410.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sh_flctl.c mtd: nand: sh_flctl: Use of_device_get_match_data() helper 2017-10-07 11:28:07 +02:00
sharpsl.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
sm_common.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sm_common.h mtd: use __packed shorthand 2014-08-19 11:53:08 -07:00
socrates_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sunxi_nand.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
tango_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
tmio_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
txx9ndfmc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
vf610_nfc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
xway_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00