]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
eventfs: Do not treat events directory different than other directories
authorSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 2 May 2024 20:08:26 +0000 (16:08 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2024 10:15:10 +0000 (12:15 +0200)
commit 22e61e15af731dbe46704c775d2335e56fcef4e9 upstream.

Treat the events directory the same as other directories when it comes to
permissions. The events directory was considered different because it's
dentry is persistent, whereas the other directory dentries are created
when accessed. But the way tracefs now does its ownership by using the
root dentry's permissions as the default permissions, the events directory
can get out of sync when a remount is performed setting the group and user
permissions.

Remove the special case for the events directory on setting the
attributes. This allows the updates caused by remount to work properly as
well as simplifies the code.

Link: https://lore.kernel.org/linux-trace-kernel/20240502200906.002923579@goodmis.org
Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Fixes: 8186fff7ab649 ("tracefs/eventfs: Use root and instance inodes as default ownership")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/tracefs/event_inode.c

index c5c5d66234aaea2f39c7f2ea35f9c2f49504720d..56d1741fe0413ae27b253f7e0b5cf481b04a2d0c 100644 (file)
@@ -164,21 +164,7 @@ static int eventfs_set_attr(struct mnt_idmap *idmap, struct dentry *dentry,
         * determined by the parent directory.
         */
        if (dentry->d_inode->i_mode & S_IFDIR) {
-               /*
-                * The events directory dentry is never freed, unless its
-                * part of an instance that is deleted. It's attr is the
-                * default for its child files and directories.
-                * Do not update it. It's not used for its own mode or ownership.
-                */
-               if (ei->is_events) {
-                       /* But it still needs to know if it was modified */
-                       if (iattr->ia_valid & ATTR_UID)
-                               ei->attr.mode |= EVENTFS_SAVE_UID;
-                       if (iattr->ia_valid & ATTR_GID)
-                               ei->attr.mode |= EVENTFS_SAVE_GID;
-               } else {
-                       update_attr(&ei->attr, iattr);
-               }
+               update_attr(&ei->attr, iattr);
 
        } else {
                name = dentry->d_name.name;