aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Brown <dan_brown@ieee.org>2005-04-06 16:13:09 -0400
committerThomas Gleixner <tglx@mtd.linutronix.de>2005-05-23 07:10:30 -0400
commit82e1d19fc3e6bd20b65937352a015a412b751d47 (patch)
tree6ac35c667e98a5e2ea5fa219668a16dd2eb8830d
parente5a3e8ca948e8ac0dad751dbd75e4dc96b4277e9 (diff)
[MTD] NAND: Fix reading of autoplaced OOB when there are multiple free sections.
Signed-off-by: Dan Brown <dan_brown@ieee.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--drivers/mtd/nand/nand_base.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 02e58f5ac721..b73f3c4e892b 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -59,7 +59,7 @@
59 * The AG-AND chips have nice features for speed improvement, 59 * The AG-AND chips have nice features for speed improvement,
60 * which are not supported yet. Read / program 4 pages in one go. 60 * which are not supported yet. Read / program 4 pages in one go.
61 * 61 *
62 * $Id: nand_base.c,v 1.140 2005/04/04 18:56:29 gleixner Exp $ 62 * $Id: nand_base.c,v 1.141 2005/04/06 20:13:05 dbrown Exp $
63 * 63 *
64 * This program is free software; you can redistribute it and/or modify 64 * This program is free software; you can redistribute it and/or modify
65 * it under the terms of the GNU General Public License version 2 as 65 * it under the terms of the GNU General Public License version 2 as
@@ -1285,13 +1285,12 @@ int nand_do_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
1285 switch(oobsel->useecc) { 1285 switch(oobsel->useecc) {
1286 case MTD_NANDECC_AUTOPLACE: 1286 case MTD_NANDECC_AUTOPLACE:
1287 /* Walk through the autoplace chunks */ 1287 /* Walk through the autoplace chunks */
1288 for (i = 0, j = 0; j < mtd->oobavail; i++) { 1288 for (i = 0; oobsel->oobfree[i][1]; i++) {
1289 int from = oobsel->oobfree[i][0]; 1289 int from = oobsel->oobfree[i][0];
1290 int num = oobsel->oobfree[i][1]; 1290 int num = oobsel->oobfree[i][1];
1291 memcpy(&oob_buf[oob], &oob_data[from], num); 1291 memcpy(&oob_buf[oob], &oob_data[from], num);
1292 j+= num; 1292 oob += num;
1293 } 1293 }
1294 oob += mtd->oobavail;
1295 break; 1294 break;
1296 case MTD_NANDECC_PLACE: 1295 case MTD_NANDECC_PLACE:
1297 /* YAFFS1 legacy mode */ 1296 /* YAFFS1 legacy mode */