summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2015-02-05 10:21:55 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2015-02-10 09:55:44 +0100
commit9d82489c07872ba35aa5ca441633869ce5bf1058 (patch)
treef5896fb51c9b3f32065bbe511af18e3a0ee866c2
parent0d26729d8542aca208780cd773e2e396899e1c48 (diff)
downloadbarebox-9d82489c07872ba35aa5ca441633869ce5bf1058.tar.gz
barebox-9d82489c07872ba35aa5ca441633869ce5bf1058.tar.xz
mtd: Fix allowing to erase bad blocks on partitions
Partitions are mtd devices themselves, but the 'erasebad' parameter is only set to the master mtd device. To allow to erase bad blocks on partitions test the master device instead of the partition devices. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/mtd/core.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c
index 82fb5f79df..345752ecfe 100644
--- a/drivers/mtd/core.c
+++ b/drivers/mtd/core.c
@@ -168,10 +168,10 @@ static int mtd_op_erase(struct cdev *cdev, size_t count, loff_t offset)
while (count > 0) {
dev_dbg(cdev->dev, "erase %d %d\n", addr, erase.len);
- if (!mtd->allow_erasebad)
- ret = mtd_block_isbad(mtd, addr);
- else
+ if (mtd->allow_erasebad || (mtd->master && mtd->master->allow_erasebad))
ret = 0;
+ else
+ ret = mtd_block_isbad(mtd, addr);
erase.addr = addr;