Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 195890
b: refs/heads/master
c: 75c0b84
h: refs/heads/master
v: v3
  • Loading branch information
Maxim Levitsky authored and David Woodhouse committed Feb 26, 2010
1 parent 87a9c07 commit e00aee1
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 298304f1a554d44cf13391e531ced3cde69a8ce4
refs/heads/master: 75c0b84d41c6f08c0cb083464907005683ef2920
19 changes: 11 additions & 8 deletions trunk/drivers/mtd/mtdcore.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,31 +350,34 @@ int add_mtd_device(struct mtd_info *mtd)
int del_mtd_device (struct mtd_info *mtd)
{
int ret;
struct mtd_notifier *not;

mutex_lock(&mtd_table_mutex);

if (idr_find(&mtd_idr, mtd->index) != mtd) {
ret = -ENODEV;
} else if (mtd->usecount) {
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 {
struct mtd_notifier *not;

device_unregister(&mtd->dev);

/* 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);

idr_remove(&mtd_idr, mtd->index);

module_put(THIS_MODULE);
ret = 0;
}

out_error:
mutex_unlock(&mtd_table_mutex);
return ret;
}
Expand Down

0 comments on commit e00aee1

Please sign in to comment.