Message ID | 20211014203953.5424-1-zev@bewilderbeest.net |
---|---|
State | Accepted |
Headers | show |
Series | mtd: core: don't remove debugfs directory if device is in use | expand |
On Thu, 2021-10-14 at 20:39:52 UTC, Zev Weiss wrote: > Previously, if del_mtd_device() failed with -EBUSY due to a non-zero > usecount, a subsequent call to attempt the deletion again would try to > remove a debugfs directory that had already been removed and panic. > With this change the second call can instead proceed safely. > > Fixes: e8e3edb95ce6 ("mtd: create per-device and module-scope debugfs entries") > Signed-off-by: Zev Weiss <zev@bewilderbeest.net> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks. Miquel
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index e22266f63ae9..0a0fca737d43 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -724,8 +724,6 @@ int del_mtd_device(struct mtd_info *mtd) mutex_lock(&mtd_table_mutex); - debugfs_remove_recursive(mtd->dbg.dfs_dir); - if (idr_find(&mtd_idr, mtd->index) != mtd) { ret = -ENODEV; goto out_error; @@ -741,6 +739,8 @@ int del_mtd_device(struct mtd_info *mtd) mtd->index, mtd->name, mtd->usecount); ret = -EBUSY; } else { + debugfs_remove_recursive(mtd->dbg.dfs_dir); + /* Try to remove the NVMEM provider */ if (mtd->nvmem) nvmem_unregister(mtd->nvmem);
Previously, if del_mtd_device() failed with -EBUSY due to a non-zero usecount, a subsequent call to attempt the deletion again would try to remove a debugfs directory that had already been removed and panic. With this change the second call can instead proceed safely. Fixes: e8e3edb95ce6 ("mtd: create per-device and module-scope debugfs entries") Signed-off-by: Zev Weiss <zev@bewilderbeest.net> --- drivers/mtd/mtdcore.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)