summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-12-19 10:35:44 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2011-12-19 12:06:49 +0100
commit790266c24de9582b56872ef5ee869442fbb76fa5 (patch)
tree3f9f0fb12bf3eeea07c707a547eede7de91c3e3f
parent07fc87d530519360b1f9c7ec7ac7d834b4c48525 (diff)
downloadbarebox-790266c24de9582b56872ef5ee869442fbb76fa5.tar.gz
barebox-790266c24de9582b56872ef5ee869442fbb76fa5.tar.xz
mtd nand: fix oob compile time option
The NAND_READ_OOB Kconfig option is used to a) creating a cdev for reading OOB data b) compiling in mtd->read_oob support The former was intended and that's also what the Kconfig help says. The latter though was implicit and wrong. mtd->read_oob is also used by the bbt code which resulted in a NULL pointer deref when compiled with BBT but without NAND_READ_OOB. To fix this, split the option into two. The now invisible option NAND_OOB_DEVICE is only responsible for b) and gets selected when necessary. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/mtd/nand/Kconfig7
-rw-r--r--drivers/mtd/nand/nand.c2
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 20f9f33713..1cc29a8eca 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -41,16 +41,21 @@ config NAND_INFO
Show informational strings about the vendor and nand flash type
during startup
+config NAND_READ_OOB
+ bool
+
config NAND_BBT
bool
+ select NAND_READ_OOB
default y
prompt "support bad block tables"
help
Say y here to include support for bad block tables. This speeds
up the process of checking for bad blocks
-config NAND_READ_OOB
+config NAND_OOB_DEVICE
bool
+ select NAND_READ_OOB
default y
prompt "create a device for reading the OOB data"
diff --git a/drivers/mtd/nand/nand.c b/drivers/mtd/nand/nand.c
index 6db21d637c..130e2af3be 100644
--- a/drivers/mtd/nand/nand.c
+++ b/drivers/mtd/nand/nand.c
@@ -186,7 +186,7 @@ static struct file_operations nand_ops = {
.lseek = dev_lseek_default,
};
-#ifdef CONFIG_NAND_READ_OOB
+#ifdef CONFIG_NAND_OOB_DEVICE
static ssize_t nand_read_oob(struct cdev *cdev, void *buf, size_t count, ulong offset, ulong flags)
{
struct mtd_info *info = cdev->priv;