|
@@ -971,10 +971,14 @@ EXPORT_SYMBOL_GPL(__put_mtd_device);
|
|
*/
|
|
*/
|
|
int mtd_erase(struct mtd_info *mtd, struct erase_info *instr)
|
|
int mtd_erase(struct mtd_info *mtd, struct erase_info *instr)
|
|
{
|
|
{
|
|
|
|
+ if (!mtd->erasesize || !mtd->_erase)
|
|
|
|
+ return -ENOTSUPP;
|
|
|
|
+
|
|
if (instr->addr >= mtd->size || instr->len > mtd->size - instr->addr)
|
|
if (instr->addr >= mtd->size || instr->len > mtd->size - instr->addr)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
if (!(mtd->flags & MTD_WRITEABLE))
|
|
if (!(mtd->flags & MTD_WRITEABLE))
|
|
return -EROFS;
|
|
return -EROFS;
|
|
|
|
+
|
|
instr->fail_addr = MTD_FAIL_ADDR_UNKNOWN;
|
|
instr->fail_addr = MTD_FAIL_ADDR_UNKNOWN;
|
|
if (!instr->len) {
|
|
if (!instr->len) {
|
|
instr->state = MTD_ERASE_DONE;
|
|
instr->state = MTD_ERASE_DONE;
|