eventfs: Do not allow NULL parent to eventfs_start_creating()
authorSteven Rostedt (Google) <rostedt@goodmis.org>
Tue, 21 Nov 2023 23:10:06 +0000 (18:10 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2023 16:02:00 +0000 (17:02 +0100)
[ Upstream commit fc4561226feaad5fcdcb55646c348d77b8ee69c5 ]

The eventfs directory is dynamically created via the meta data supplied by
the existing trace events. All files and directories in eventfs has a
parent. Do not allow NULL to be passed into eventfs_start_creating() as
the parent because that should never happen. Warn if it does.

Link: https://lkml.kernel.org/r/20231121231112.693841807@goodmis.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/tracefs/inode.c

index 891653b..0292c6a 100644 (file)
@@ -509,20 +509,15 @@ struct dentry *eventfs_start_creating(const char *name, struct dentry *parent)
        struct dentry *dentry;
        int error;
 
+       /* Must always have a parent. */
+       if (WARN_ON_ONCE(!parent))
+               return ERR_PTR(-EINVAL);
+
        error = simple_pin_fs(&trace_fs_type, &tracefs_mount,
                              &tracefs_mount_count);
        if (error)
                return ERR_PTR(error);
 
-       /*
-        * If the parent is not specified, we create it in the root.
-        * We need the root dentry to do this, which is in the super
-        * block. A pointer to that is in the struct vfsmount that we
-        * have around.
-        */
-       if (!parent)
-               parent = tracefs_mount->mnt_root;
-
        if (unlikely(IS_DEADDIR(parent->d_inode)))
                dentry = ERR_PTR(-ENOENT);
        else