mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tracefs: Have new files inherit the ownership of their parent
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>
			
			
This commit is contained in:
		
							parent
							
								
									0fcfb00b28
								
							
						
					
					
						commit
						ee7f366699
					
				
					 1 changed files with 4 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -414,6 +414,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);
 | 
			
		||||
| 
						 | 
				
			
			@ -436,6 +438,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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue