[MTD] NAND: Fix the broken dynamic array allocations
Reverting the change from 1.136 to 1.137 (back to static allocation of ecc arrays) due to stack corruption and ecc errors. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
65c6e0a657
Коммит
0a18cde60f
|
@ -59,7 +59,7 @@
|
||||||
* The AG-AND chips have nice features for speed improvement,
|
* The AG-AND chips have nice features for speed improvement,
|
||||||
* which are not supported yet. Read / program 4 pages in one go.
|
* which are not supported yet. Read / program 4 pages in one go.
|
||||||
*
|
*
|
||||||
* $Id: nand_base.c,v 1.141 2005/04/06 20:13:05 dbrown Exp $
|
* $Id: nand_base.c,v 1.142 2005/04/11 14:16:07 lavinen Exp $
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -855,7 +855,7 @@ static int nand_write_page (struct mtd_info *mtd, struct nand_chip *this, int pa
|
||||||
u_char *oob_buf, struct nand_oobinfo *oobsel, int cached)
|
u_char *oob_buf, struct nand_oobinfo *oobsel, int cached)
|
||||||
{
|
{
|
||||||
int i, status;
|
int i, status;
|
||||||
u_char ecc_code[oobsel->eccbytes];
|
u_char ecc_code[32];
|
||||||
int eccmode = oobsel->useecc ? this->eccmode : NAND_ECC_NONE;
|
int eccmode = oobsel->useecc ? this->eccmode : NAND_ECC_NONE;
|
||||||
int *oob_config = oobsel->eccpos;
|
int *oob_config = oobsel->eccpos;
|
||||||
int datidx = 0, eccidx = 0, eccsteps = this->eccsteps;
|
int datidx = 0, eccidx = 0, eccsteps = this->eccsteps;
|
||||||
|
@ -961,7 +961,7 @@ static int nand_verify_pages (struct mtd_info *mtd, struct nand_chip *this, int
|
||||||
int i, j, datidx = 0, oobofs = 0, res = -EIO;
|
int i, j, datidx = 0, oobofs = 0, res = -EIO;
|
||||||
int eccsteps = this->eccsteps;
|
int eccsteps = this->eccsteps;
|
||||||
int hweccbytes;
|
int hweccbytes;
|
||||||
u_char oobdata[mtd->oobsize];
|
u_char oobdata[64];
|
||||||
|
|
||||||
hweccbytes = (this->options & NAND_HWECC_SYNDROME) ? (oobsel->eccbytes / eccsteps) : 0;
|
hweccbytes = (this->options & NAND_HWECC_SYNDROME) ? (oobsel->eccbytes / eccsteps) : 0;
|
||||||
|
|
||||||
|
@ -1111,8 +1111,8 @@ int nand_do_read_ecc (struct mtd_info *mtd, loff_t from, size_t len,
|
||||||
int read = 0, oob = 0, ecc_status = 0, ecc_failed = 0;
|
int read = 0, oob = 0, ecc_status = 0, ecc_failed = 0;
|
||||||
struct nand_chip *this = mtd->priv;
|
struct nand_chip *this = mtd->priv;
|
||||||
u_char *data_poi, *oob_data = oob_buf;
|
u_char *data_poi, *oob_data = oob_buf;
|
||||||
u_char ecc_calc[oobsel->eccbytes];
|
u_char ecc_calc[32];
|
||||||
u_char ecc_code[oobsel->eccbytes];
|
u_char ecc_code[32];
|
||||||
int eccmode, eccsteps;
|
int eccmode, eccsteps;
|
||||||
int *oob_config, datidx;
|
int *oob_config, datidx;
|
||||||
int blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
|
int blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче