diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-02-05 10:21:55 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-02-10 09:55:44 +0100 |
commit | 9d82489c07872ba35aa5ca441633869ce5bf1058 (patch) | |
tree | f5896fb51c9b3f32065bbe511af18e3a0ee866c2 | |
parent | 0d26729d8542aca208780cd773e2e396899e1c48 (diff) | |
download | barebox-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.c | 6 |
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; |