aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/onenand/onenand_base.c
diff options
context:
space:
mode:
authorAdrian Hunter <ext-adrian.hunter@nokia.com>2007-10-12 10:34:01 +0300
committerDavid Woodhouse <dwmw2@infradead.org>2007-10-14 13:37:53 +0100
commit3cd3a86b6fdcb80ad097850a0990bcf6251422fe (patch)
tree287cdca45092f67a98af79853134e71545cfdf12 /drivers/mtd/onenand/onenand_base.c
parent30a7eb298af849bae3050e0a3f4c130995da22b0 (diff)
downloadkernel_samsung_smdk4412-3cd3a86b6fdcb80ad097850a0990bcf6251422fe.tar.gz
kernel_samsung_smdk4412-3cd3a86b6fdcb80ad097850a0990bcf6251422fe.tar.bz2
kernel_samsung_smdk4412-3cd3a86b6fdcb80ad097850a0990bcf6251422fe.zip
[MTD] [OneNAND] Avoid deadlock in erase callback; release chip lock first.
When the erase callback performs some other action on the flash, it's highly likely to deadlock unless we actually release the chip lock before calling it. This patch mirrors that same change already done for NAND. Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'drivers/mtd/onenand/onenand_base.c')
-rw-r--r--drivers/mtd/onenand/onenand_base.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index a8c426bf47a..dd283556909 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -1711,13 +1711,14 @@ static int onenand_erase(struct mtd_info *mtd, struct erase_info *instr)
erase_exit:
ret = instr->state == MTD_ERASE_DONE ? 0 : -EIO;
- /* Do call back function */
- if (!ret)
- mtd_erase_callback(instr);
/* Deselect and wake up anyone waiting on the device */
onenand_release_device(mtd);
+ /* Do call back function */
+ if (!ret)
+ mtd_erase_callback(instr);
+
return ret;
}