summaryrefslogtreecommitdiffstats
path: root/fs/reiserfs/xattr.c
diff options
context:
space:
mode:
authorAl Viro2011-06-20 17:31:30 +0200
committerAl Viro2011-07-20 07:43:16 +0200
commit178ea73521d64ba41d7aa5488fb9f549c6d4507d (patch)
tree7fb6bfb6483577752e307a5bb2e3905658d44294 /fs/reiserfs/xattr.c
parentlockless get_write_access/deny_write_access (diff)
downloadkernel-qcow2-linux-178ea73521d64ba41d7aa5488fb9f549c6d4507d.tar.gz
kernel-qcow2-linux-178ea73521d64ba41d7aa5488fb9f549c6d4507d.tar.xz
kernel-qcow2-linux-178ea73521d64ba41d7aa5488fb9f549c6d4507d.zip
kill check_acl callback of generic_permission()
its value depends only on inode and does not change; we might as well store it in ->i_op->check_acl and be done with that. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/reiserfs/xattr.c')
-rw-r--r--fs/reiserfs/xattr.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index d78089690965..ddc5301d2986 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -868,11 +868,17 @@ out:
return err;
}
-static int reiserfs_check_acl(struct inode *inode, int mask, unsigned int flags)
+int reiserfs_check_acl(struct inode *inode, int mask, unsigned int flags)
{
struct posix_acl *acl;
int error = -EAGAIN; /* do regular unix permission checks by default */
+ /*
+ * Stat data v1 doesn't support ACLs.
+ */
+ if (get_inode_sd_version(inode) == STAT_DATA_V1)
+ return -EAGAIN;
+
if (flags & IPERM_FLAG_RCU)
return -ECHILD;
@@ -961,15 +967,7 @@ int reiserfs_permission(struct inode *inode, int mask, unsigned int flags)
if (IS_PRIVATE(inode))
return 0;
-#ifdef CONFIG_REISERFS_FS_XATTR
- /*
- * Stat data v1 doesn't support ACLs.
- */
- if (get_inode_sd_version(inode) != STAT_DATA_V1)
- return generic_permission(inode, mask, flags,
- reiserfs_check_acl);
-#endif
- return generic_permission(inode, mask, flags, NULL);
+ return generic_permission(inode, mask, flags);
}
static int xattr_hide_revalidate(struct dentry *dentry, struct nameidata *nd)