aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Mahoney <jeffm@suse.com>2009-05-17 01:02:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-05-17 14:45:45 -0400
commitb83674c0da6558e357c6b482ccf299eeea77d8ef (patch)
tree22f71c1f3f099887b53884a9cabbb6aaeb3bc0a6
parentceb5edc457f07956c82dccfb54ca8ae7e2a399f0 (diff)
reiserfs: fixup perms when xattrs are disabled
This adds CONFIG_REISERFS_FS_XATTR protection from reiserfs_permission. This is needed to avoid warnings during file deletions and chowns with xattrs disabled. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/reiserfs/xattr.c36
-rw-r--r--include/linux/reiserfs_xattr.h4
2 files changed, 20 insertions, 20 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
index 628075ca82c1..8e7deb0e6964 100644
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -871,23 +871,6 @@ static int reiserfs_check_acl(struct inode *inode, int mask)
871 return error; 871 return error;
872} 872}
873 873
874int reiserfs_permission(struct inode *inode, int mask)
875{
876 /*
877 * We don't do permission checks on the internal objects.
878 * Permissions are determined by the "owning" object.
879 */
880 if (IS_PRIVATE(inode))
881 return 0;
882 /*
883 * Stat data v1 doesn't support ACLs.
884 */
885 if (get_inode_sd_version(inode) == STAT_DATA_V1)
886 return generic_permission(inode, mask, NULL);
887 else
888 return generic_permission(inode, mask, reiserfs_check_acl);
889}
890
891static int create_privroot(struct dentry *dentry) 874static int create_privroot(struct dentry *dentry)
892{ 875{
893 int err; 876 int err;
@@ -951,6 +934,25 @@ static int xattr_mount_check(struct super_block *s)
951 return 0; 934 return 0;
952} 935}
953 936
937int reiserfs_permission(struct inode *inode, int mask)
938{
939 /*
940 * We don't do permission checks on the internal objects.
941 * Permissions are determined by the "owning" object.
942 */
943 if (IS_PRIVATE(inode))
944 return 0;
945
946#ifdef CONFIG_REISERFS_FS_XATTR
947 /*
948 * Stat data v1 doesn't support ACLs.
949 */
950 if (get_inode_sd_version(inode) != STAT_DATA_V1)
951 return generic_permission(inode, mask, reiserfs_check_acl);
952#endif
953 return generic_permission(inode, mask, NULL);
954}
955
954/* This will catch lookups from the fs root to .reiserfs_priv */ 956/* This will catch lookups from the fs root to .reiserfs_priv */
955static int 957static int
956xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name) 958xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name)
diff --git a/include/linux/reiserfs_xattr.h b/include/linux/reiserfs_xattr.h
index cdedc01036e4..99928dce37ea 100644
--- a/include/linux/reiserfs_xattr.h
+++ b/include/linux/reiserfs_xattr.h
@@ -41,6 +41,7 @@ int reiserfs_xattr_init(struct super_block *sb, int mount_flags);
41int reiserfs_lookup_privroot(struct super_block *sb); 41int reiserfs_lookup_privroot(struct super_block *sb);
42int reiserfs_delete_xattrs(struct inode *inode); 42int reiserfs_delete_xattrs(struct inode *inode);
43int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); 43int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs);
44int reiserfs_permission(struct inode *inode, int mask);
44 45
45#ifdef CONFIG_REISERFS_FS_XATTR 46#ifdef CONFIG_REISERFS_FS_XATTR
46#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) 47#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir)
@@ -50,7 +51,6 @@ int reiserfs_setxattr(struct dentry *dentry, const char *name,
50 const void *value, size_t size, int flags); 51 const void *value, size_t size, int flags);
51ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size); 52ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
52int reiserfs_removexattr(struct dentry *dentry, const char *name); 53int reiserfs_removexattr(struct dentry *dentry, const char *name);
53int reiserfs_permission(struct inode *inode, int mask);
54 54
55int reiserfs_xattr_get(struct inode *, const char *, void *, size_t); 55int reiserfs_xattr_get(struct inode *, const char *, void *, size_t);
56int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int); 56int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int);
@@ -117,8 +117,6 @@ static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
117#define reiserfs_listxattr NULL 117#define reiserfs_listxattr NULL
118#define reiserfs_removexattr NULL 118#define reiserfs_removexattr NULL
119 119
120#define reiserfs_permission NULL
121
122static inline void reiserfs_init_xattr_rwsem(struct inode *inode) 120static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
123{ 121{
124} 122}