From: Richard Weinberger <rich...@nod.at> del_mtd_device() is allowed to fail. i.e. when the MTD is busy. Unregister the reboot notifier only when we're really about to delete the MTD.
Signed-off-by: Richard Weinberger <rich...@nod.at> --- drivers/mtd/mtdcore.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index e3936b8..36e5fb0 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -654,17 +654,22 @@ int mtd_device_unregister(struct mtd_info *master) { int err; - if (master->_reboot) - unregister_reboot_notifier(&master->reboot_notifier); - err = del_mtd_partitions(master); if (err) return err; if (!device_is_registered(&master->dev)) - return 0; + goto unregister; - return del_mtd_device(master); + err = del_mtd_device(master); + if (err) + return err; + +unregister: + if (master->_reboot) + unregister_reboot_notifier(&master->reboot_notifier); + + return 0; } EXPORT_SYMBOL_GPL(mtd_device_unregister); -- 2.8.3