mtd: mtdswap: remove debugfs stats file on teardown

mtdswap_add_debugfs() creates an mtdswap_stats debugfs file under the
per-MTD debugfs directory, but mtdswap_remove_dev() never removes it
before freeing the mtdswap_dev.

Store the returned dentry and remove it during device teardown before the
driver-private state is freed.

Fixes: a321590246 ("mtd: Add mtdswap block driver")
Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
This commit is contained in:
Pengpeng Hou 2026-06-23 09:53:17 +08:00 committed by Miquel Raynal
parent a74e31d0a2
commit 66fb313581

View File

@ -125,6 +125,7 @@ struct mtdswap_dev {
char *page_buf;
char *oob_buf;
struct dentry *debugfs_stats;
};
struct mtdswap_oobdata {
@ -1262,7 +1263,8 @@ static int mtdswap_add_debugfs(struct mtdswap_dev *d)
if (IS_ERR_OR_NULL(root))
return -1;
debugfs_create_file("mtdswap_stats", S_IRUSR, root, d, &mtdswap_fops);
d->debugfs_stats = debugfs_create_file("mtdswap_stats", 0400, root,
d, &mtdswap_fops);
return 0;
}
@ -1463,6 +1465,7 @@ static void mtdswap_remove_dev(struct mtd_blktrans_dev *dev)
{
struct mtdswap_dev *d = MTDSWAP_MBD_TO_MTDSWAP(dev);
debugfs_remove(d->debugfs_stats);
del_mtd_blktrans_dev(dev);
mtdswap_cleanup(d);
kfree(d);