From: Richard Weinberger <rich...@nod.at>

Only call them when we're really removing the MTD.

Reviewed-by: Boris Brezillon <boris.brezil...@free-electrons.com>
Signed-off-by: Richard Weinberger <rich...@nod.at>
---
 drivers/mtd/mtdcore.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 36e5fb0..b8205ec 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -499,16 +499,17 @@ int del_mtd_device(struct mtd_info *mtd)
                goto out_error;
        }
 
-       /* No need to get a refcount on the module containing
-               the notifier, since we hold the mtd_table_mutex */
-       list_for_each_entry(not, &mtd_notifiers, list)
-               not->remove(mtd);
-
        if (mtd->usecount) {
                printk(KERN_NOTICE "Removing MTD device #%d (%s) with use count 
%d\n",
                       mtd->index, mtd->name, mtd->usecount);
                ret = -EBUSY;
        } else {
+               /* No need to get a refcount on the module containing
+                * the notifier, since we hold the mtd_table_mutex
+                */
+               list_for_each_entry(not, &mtd_notifiers, list)
+                       not->remove(mtd);
+
                device_unregister(&mtd->dev);
 
                idr_remove(&mtd_idr, mtd->index);
-- 
2.8.3

Reply via email to