drivers/mtd/onenand/: unacceptable stack usage

From: Adrian Bunk
Date: Thu Dec 15 2005 - 19:54:18 EST


In 2.6.15-rc, the following driver was added:


include/linux/mtd/onenand.h:
#define MAX_ONENAND_PAGESIZE (2048 + 64)


drivers/mtd/onenand/onenand_base.c:
static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs,
unsigned long count, loff_t to, size_t *retlen,
u_char *eccbuf, struct nand_oobinfo *oobsel)
{
struct onenand_chip *this = mtd->priv;
unsigned char buffer[MAX_ONENAND_PAGESIZE], *pbuf;


drivers/mtd/onenand/onenand_bbt.c:
static inline int onenand_memory_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd)
{
unsigned char data_buf[MAX_ONENAND_PAGESIZE];


These are variables on the stack that are > 2kB which is not acceptable
since the complete stack might be only 4kB.


Please either fix this before 2.6.15 or mark the MTD_ONENAND driver as
BROKEN until it's fixed.


TIA
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/