UPSTREAM: tracefs: Have new files inherit the ownership of their parent
commit ee7f3666995d8537dec17b1d35425f28877671a9 upstream. If directories in tracefs have their ownership changed, then any new files and directories that are created under those directories should inherit the ownership of the director they are created in. Link: https://lkml.kernel.org/r/20211208075720.4855d180@gandalf.local.home Cc: Kees Cook <keescook@chromium.org> Cc: Ingo Molnar <mingo@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Yabin Cui <yabinc@google.com> Cc: Christian Brauner <christian.brauner@ubuntu.com> Cc: stable@vger.kernel.org Fixes:4282d60689
("tracefs: Add new tracefs file system") Reported-by: Kalesh Singh <kaleshsingh@google.com> Reported: https://lore.kernel.org/all/CAC_TJve8MMAv+H_NdLSJXZUSoxOEq2zB_pVaJ9p=7H6Bu3X76g@mail.gmail.com/ Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit33204825cc
) Bug: 214061655 Signed-off-by: Roger Liao <rogerliao@google.com> Change-Id: I033edde0b38d2c1cad638a9d5f8648aa7f16cfdf
This commit is contained in:

committed by
Roger Liao

parent
9c63be2ada
commit
8455746a45
@@ -412,6 +412,8 @@ struct dentry *tracefs_create_file(const char *name, umode_t mode,
|
||||
inode->i_mode = mode;
|
||||
inode->i_fop = fops ? fops : &tracefs_file_operations;
|
||||
inode->i_private = data;
|
||||
inode->i_uid = d_inode(dentry->d_parent)->i_uid;
|
||||
inode->i_gid = d_inode(dentry->d_parent)->i_gid;
|
||||
d_instantiate(dentry, inode);
|
||||
fsnotify_create(dentry->d_parent->d_inode, dentry);
|
||||
return end_creating(dentry);
|
||||
@@ -434,6 +436,8 @@ static struct dentry *__create_dir(const char *name, struct dentry *parent,
|
||||
inode->i_mode = S_IFDIR | S_IRWXU | S_IRUSR| S_IRGRP | S_IXUSR | S_IXGRP;
|
||||
inode->i_op = ops;
|
||||
inode->i_fop = &simple_dir_operations;
|
||||
inode->i_uid = d_inode(dentry->d_parent)->i_uid;
|
||||
inode->i_gid = d_inode(dentry->d_parent)->i_gid;
|
||||
|
||||
/* directory inodes start off with i_nlink == 2 (for "." entry) */
|
||||
inc_nlink(inode);
|
||||
|
Reference in New Issue
Block a user