diff options
| author | Dave Kleikamp <dave.kleikamp@oracle.com> | 2014-02-07 14:36:10 -0600 | 
|---|---|---|
| committer | Dave Kleikamp <dave.kleikamp@oracle.com> | 2014-02-08 10:50:58 -0600 | 
| commit | c18f7b51200c3c8b76c63e391f9995b65ace9c83 (patch) | |
| tree | ca7af52334c5aa69b61b583f67961cd67ec53814 /fs/jfs | |
| parent | 41f76d8bee06be5a9b301ebf13f61a719ba548c4 (diff) | |
| download | linux-c18f7b51200c3c8b76c63e391f9995b65ace9c83.tar.bz2 | |
jfs: fix generic posix ACL regression
I missed a couple errors in reviewing the patches converting jfs
to use the generic posix ACL function. Setting ACL's currently
fails with -EOPNOTSUPP.
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Reported-by: Michael L. Semon <mlsemon35@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/jfs')
| -rw-r--r-- | fs/jfs/xattr.c | 14 | 
1 files changed, 7 insertions, 7 deletions
| diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c index 3bd5ee45f7b3..46325d5c34fc 100644 --- a/fs/jfs/xattr.c +++ b/fs/jfs/xattr.c @@ -854,9 +854,6 @@ int jfs_setxattr(struct dentry *dentry, const char *name, const void *value,  	int rc;  	tid_t tid; -	if ((rc = can_set_xattr(inode, name, value, value_len))) -		return rc; -  	/*  	 * If this is a request for a synthetic attribute in the system.*  	 * namespace use the generic infrastructure to resolve a handler @@ -865,6 +862,9 @@ int jfs_setxattr(struct dentry *dentry, const char *name, const void *value,  	if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))  		return generic_setxattr(dentry, name, value, value_len, flags); +	if ((rc = can_set_xattr(inode, name, value, value_len))) +		return rc; +  	if (value == NULL) {	/* empty EA, do not remove */  		value = "";  		value_len = 0; @@ -1034,9 +1034,6 @@ int jfs_removexattr(struct dentry *dentry, const char *name)  	int rc;  	tid_t tid; -	if ((rc = can_set_xattr(inode, name, NULL, 0))) -		return rc; -  	/*  	 * If this is a request for a synthetic attribute in the system.*  	 * namespace use the generic infrastructure to resolve a handler @@ -1045,6 +1042,9 @@ int jfs_removexattr(struct dentry *dentry, const char *name)  	if (!strncmp(name, XATTR_SYSTEM_PREFIX, XATTR_SYSTEM_PREFIX_LEN))  		return generic_removexattr(dentry, name); +	if ((rc = can_set_xattr(inode, name, NULL, 0))) +		return rc; +  	tid = txBegin(inode->i_sb, 0);  	mutex_lock(&ji->commit_mutex);  	rc = __jfs_setxattr(tid, dentry->d_inode, name, NULL, 0, XATTR_REPLACE); @@ -1061,7 +1061,7 @@ int jfs_removexattr(struct dentry *dentry, const char *name)   * attributes are handled directly.   */  const struct xattr_handler *jfs_xattr_handlers[] = { -#ifdef JFS_POSIX_ACL +#ifdef CONFIG_JFS_POSIX_ACL  	&posix_acl_access_xattr_handler,  	&posix_acl_default_xattr_handler,  #endif |