diff options
Diffstat (limited to 'fs/namei.c')
| -rw-r--r-- | fs/namei.c | 18 | 
1 files changed, 5 insertions, 13 deletions
diff --git a/fs/namei.c b/fs/namei.c index 701954d68ac..941c4362e29 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -228,9 +228,6 @@ static int acl_permission_check(struct inode *inode, int mask)  {  	unsigned int mode = inode->i_mode; -	if (current_user_ns() != inode_userns(inode)) -		goto other_perms; -  	if (likely(current_fsuid() == inode->i_uid))  		mode >>= 6;  	else { @@ -244,7 +241,6 @@ static int acl_permission_check(struct inode *inode, int mask)  			mode >>= 3;  	} -other_perms:  	/*  	 * If the DACs are ok we don't need any capability check.  	 */ @@ -280,10 +276,10 @@ int generic_permission(struct inode *inode, int mask)  	if (S_ISDIR(inode->i_mode)) {  		/* DACs are overridable for directories */ -		if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE)) +		if (inode_capable(inode, CAP_DAC_OVERRIDE))  			return 0;  		if (!(mask & MAY_WRITE)) -			if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH)) +			if (inode_capable(inode, CAP_DAC_READ_SEARCH))  				return 0;  		return -EACCES;  	} @@ -293,7 +289,7 @@ int generic_permission(struct inode *inode, int mask)  	 * at least one exec bit set.  	 */  	if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO)) -		if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE)) +		if (inode_capable(inode, CAP_DAC_OVERRIDE))  			return 0;  	/* @@ -301,7 +297,7 @@ int generic_permission(struct inode *inode, int mask)  	 */  	mask &= MAY_READ | MAY_WRITE | MAY_EXEC;  	if (mask == MAY_READ) -		if (ns_capable(inode_userns(inode), CAP_DAC_READ_SEARCH)) +		if (inode_capable(inode, CAP_DAC_READ_SEARCH))  			return 0;  	return -EACCES; @@ -1964,15 +1960,11 @@ static inline int check_sticky(struct inode *dir, struct inode *inode)  	if (!(dir->i_mode & S_ISVTX))  		return 0; -	if (current_user_ns() != inode_userns(inode)) -		goto other_userns;  	if (inode->i_uid == fsuid)  		return 0;  	if (dir->i_uid == fsuid)  		return 0; - -other_userns: -	return !ns_capable(inode_userns(inode), CAP_FOWNER); +	return !inode_capable(inode, CAP_FOWNER);  }  /*  |