Skip to content

Commit

Permalink
[MTD] [NAND] Avoid deadlock in erase callback; release chip lock first.
Browse files Browse the repository at this point in the history
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.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
  • Loading branch information
David Woodhouse committed Oct 6, 2007
1 parent 1fcf8ce commit 49defc0
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/mtd/nand/nand_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -2069,13 +2069,14 @@ int nand_erase_nand(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 */
nand_release_device(mtd);

/* Do call back function */
if (!ret)
mtd_erase_callback(instr);

/*
* If BBT requires refresh and erase was successful, rewrite any
* selected bad block tables
Expand Down

0 comments on commit 49defc0

Please sign in to comment.