diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c index f2772fc740c0..819c337c22ff 100644 --- a/mm/damon/dbgfs.c +++ b/mm/damon/dbgfs.c @@ -785,6 +785,7 @@ out: static int dbgfs_rm_context(char *name) { struct dentry *root, *dir, **new_dirs; + struct inode *inode; struct damon_ctx **new_ctxs; int i, j; int ret = 0; @@ -800,6 +801,12 @@ static int dbgfs_rm_context(char *name) if (!dir) return -ENOENT; + inode = d_inode(dir); + if (!S_ISDIR(inode->i_mode)) { + ret = -EINVAL; + goto out_dput; + } + new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs), GFP_KERNEL); if (!new_dirs) {