diff options
Diffstat (limited to 'security/commoncap.c')
| -rw-r--r-- | security/commoncap.c | 25 | 
1 files changed, 10 insertions, 15 deletions
diff --git a/security/commoncap.c b/security/commoncap.c index 14540bd78561..8df676fbd393 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -310,13 +310,8 @@ int cap_inode_need_killpriv(struct dentry *dentry)  	struct inode *inode = d_backing_inode(dentry);  	int error; -	if (!inode->i_op->getxattr) -	       return 0; - -	error = inode->i_op->getxattr(dentry, inode, XATTR_NAME_CAPS, NULL, 0); -	if (error <= 0) -		return 0; -	return 1; +	error = __vfs_getxattr(dentry, inode, XATTR_NAME_CAPS, NULL, 0); +	return error > 0;  }  /** @@ -329,12 +324,12 @@ int cap_inode_need_killpriv(struct dentry *dentry)   */  int cap_inode_killpriv(struct dentry *dentry)  { -	struct inode *inode = d_backing_inode(dentry); - -	if (!inode->i_op->removexattr) -	       return 0; +	int error; -	return inode->i_op->removexattr(dentry, XATTR_NAME_CAPS); +	error = __vfs_removexattr(dentry, XATTR_NAME_CAPS); +	if (error == -EOPNOTSUPP) +		error = 0; +	return error;  }  /* @@ -394,11 +389,11 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data  	memset(cpu_caps, 0, sizeof(struct cpu_vfs_cap_data)); -	if (!inode || !inode->i_op->getxattr) +	if (!inode)  		return -ENODATA; -	size = inode->i_op->getxattr((struct dentry *)dentry, inode, -				     XATTR_NAME_CAPS, &caps, XATTR_CAPS_SZ); +	size = __vfs_getxattr((struct dentry *)dentry, inode, +			      XATTR_NAME_CAPS, &caps, XATTR_CAPS_SZ);  	if (size == -ENODATA || size == -EOPNOTSUPP)  		/* no data, that's ok */  		return -ENODATA;  |