[MTD NAND] Use vmalloc for buffer when scanning for bad blocks.
David Woodhouse [Sat, 13 May 2006 03:03:42 +0000 (04:03 +0100)]
These new chips have 128KiB blocks. Don't try to kmalloc that.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>

drivers/mtd/nand/nand_bbt.c

index ca28699..32f063b 100644 (file)
@@ -60,7 +60,7 @@
 #include <linux/mtd/compatmac.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
-
+#include <linux/vmalloc.h>
 
 /**
  * check_pattern - [GENERIC] check if a pattern is in the buffer
@@ -873,7 +873,7 @@ int nand_scan_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd)
        /* Allocate a temporary buffer for one eraseblock incl. oob */
        len = (1 << this->bbt_erase_shift);
        len += (len >> this->page_shift) * mtd->oobsize;
-       buf = kmalloc (len, GFP_KERNEL);
+       buf = vmalloc(len);
        if (!buf) {
                printk (KERN_ERR "nand_bbt: Out of memory\n");
                kfree (this->bbt);
@@ -897,7 +897,7 @@ int nand_scan_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd)
        if (md)
                mark_bbt_region (mtd, md);
 
-       kfree (buf);
+       vfree (buf);
        return res;
 }