aha/drivers/mtd
David Brownell 52ff49df7f [MTD] [NAND] fix "raw" reads with ECC syndrome layouts
The syndrome based page read/write routines store ECC, and possibly other
"OOB" data, right after each chunk of ECC'd data.  With ECC chunk size of
512 bytes and a large page (2KiB) NAND, the layout is:

  data-0 OOB-0 data-1 OOB-1 data-2 OOB-2 data-3 OOB-3 OOB-leftover

Where OOBx is (prepad, ECC, postpad).  However, the current "raw" routines
use a traditional layout -- data OOB, disregarding the prepad and postpad
values -- so when they're used with that type of ECC hardware, those calls
mix up the data and OOB.  Which means, in particular, that bad block
tables won't be found on startup, with data corruption and related chaos
ensuing.

The current syndrome-based drivers in mainline all seem to use one chunk
per page; presumably they haven't noticed such bugs.

Fix this, by adding read/write page_raw_syndrome() routines as siblings of
the existing non-raw routines; "raw" just means to bypass the ECC
computations, not change data and OOB layout.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2009-03-20 12:27:43 +00:00
..
chips [MTD] map_rom has NULL erase pointer 2009-01-11 19:56:46 +00:00
devices ps3/block: Replace mtd/ps3vram by block/ps3vram 2009-03-13 16:07:19 +11:00
lpddr [MTD] [LPDDR] qinfo_probe depends on lpddr 2009-01-11 10:42:32 +00:00
maps mtd: physmap: fix NULL pointer dereference in error path 2009-03-10 15:55:11 -07:00
nand [MTD] [NAND] fix "raw" reads with ECC syndrome layouts 2009-03-20 12:27:43 +00:00
onenand ARM: OMAP: Fix gpio by switching to generic gpio calls, v2 2009-01-15 13:09:52 +02:00
tests [MTD] [TESTS] Fix some size_t printk format warnings 2009-01-05 16:31:03 +00:00
ubi UBI: allow direct user-space I/O 2009-01-27 16:54:41 +02:00
afs.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
ar7part.c [MTD] Clean up AR7 partition map support 2008-04-23 09:39:49 +01:00
cmdlinepart.c [MTD] cmdlineparts documentation change - explain where mtd-id comes from 2008-10-18 12:43:03 +01:00
ftl.c [MTD] Remove strange u_int32_t types from FTL 2008-12-10 14:06:42 +00:00
inftlcore.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
inftlmount.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
Kconfig Merge branch 'master' of git://git.infradead.org/users/dedekind/mtd-tests-2.6 2009-01-05 16:24:55 +00:00
Makefile Merge branch 'master' of git://git.infradead.org/users/dedekind/mtd-tests-2.6 2009-01-05 16:24:55 +00:00
mtd_blkdevs.c [PATCH] switch mtd_blkdevs 2008-10-21 07:48:38 -04:00
mtdblock.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
mtdblock_ro.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
mtdchar.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
mtdconcat.c mtd: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:38 -08:00
mtdcore.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
mtdcore.h
mtdoops.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
mtdpart.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
mtdsuper.c [MTD] Fix !CONFIG_BLOCK compile for mtdsuper.c 2008-08-02 07:52:39 +01:00
nftlcore.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
nftlmount.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00
ofpart.c [MTD] remove unused mtd parameter in of_mtd_parse_partitions() 2008-10-13 15:01:42 +01:00
redboot.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-07-11 14:36:25 +01:00
rfd_ftl.c [MTD] remove private wrapper of endian helpers in rfd_ftl.c 2008-12-10 15:39:09 +00:00
ssfdc.c [MTD] update internal API to support 64-bit device size 2008-12-10 13:37:21 +00:00