mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-04 16:52:06 +10:00 
			
		
		
		
	RAMFS NOMMU: missed POSIX UID/GID inode attribute checking
This bug was caught by LTP testcase fchmod06 on Blackfin platform. In the manpage of fchmod, "EPERM: The effective UID does not match the owner of the file, and the process is not privileged (Linux: it does not have the CAP_FOWNER capability)." But the ramfs nommu code missed the inode_change_ok POSIX UID/GID verification. This patch fixed this. Signed-off-by: Bryan Wu <bryan.wu@analog.com> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									c8d8170feb
								
							
						
					
					
						commit
						85f6038f21
					
				@ -195,6 +195,11 @@ static int ramfs_nommu_setattr(struct dentry *dentry, struct iattr *ia)
 | 
			
		||||
	unsigned int old_ia_valid = ia->ia_valid;
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
 | 
			
		||||
	/* POSIX UID/GID verification for setting inode attributes */
 | 
			
		||||
	ret = inode_change_ok(inode, ia);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	/* by providing our own setattr() method, we skip this quotaism */
 | 
			
		||||
	if ((old_ia_valid & ATTR_UID && ia->ia_uid != inode->i_uid) ||
 | 
			
		||||
	    (old_ia_valid & ATTR_GID && ia->ia_gid != inode->i_gid))
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user