diff --git a/mm/damon/dbgfs.c b/mm/damon/dbgfs.c index e670fb6b1126..b039fd1f8a1d 100644 --- a/mm/damon/dbgfs.c +++ b/mm/damon/dbgfs.c @@ -441,6 +441,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; @@ -456,6 +457,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) {