On Sat, 2012-06-30 at 14:32 +0200, Roland Stigge wrote:
Hi Artem!
Thanks for the notes!
On 29/06/12 14:37, Artem Bityutskiy wrote:
quoted
Successfully built configuration
"arm-lpc32xx_defconfig,arm,arm-unknown-linux-gnueabi-", results:
--- before_patching.log +++ after_patching.log @@ @@
+drivers/mtd/nand/lpc32xx_mlc.c: In function 'lpc32xx_nand_probe':
+drivers/mtd/nand/lpc32xx_mlc.c:679:10: warning: variable 'sr' set
but not used [-Wunused-but-set-variable]
+drivers/mtd/nand/lpc32xx_mlc.c:561:24: error: bad constant
expression [sparse]
This is because sparse doesn't understand this local variable:
uint8_t buf[mtd->writesize];
mtd->writesize is typically 2048KiB (or even larger, there are MLCs with
4 and 8 KiB NAND page size). You cannot allocate that much on the stack,
linux kernel stack size is very small - only 8KiB, and there are people
who use even 4KiB stacks. So this have to be fixed.
The above construction is quite convenient for this case and I'd
prefer this to allocating another buffer dynamically.
Yes, in userspaces it is, but unfortunately in the kernel we cannot
afford allocating that much on the stack.
--
Best Regards,
Artem Bityutskiy