diff options
author | Jeff Mahoney <jeffm@suse.com> | 2009-05-17 01:02:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-17 14:45:45 -0400 |
commit | b83674c0da6558e357c6b482ccf299eeea77d8ef (patch) | |
tree | 22f71c1f3f099887b53884a9cabbb6aaeb3bc0a6 /fs | |
parent | ceb5edc457f07956c82dccfb54ca8ae7e2a399f0 (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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/reiserfs/xattr.c | 36 |
1 files changed, 19 insertions, 17 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 | ||
874 | int 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 | |||
891 | static int create_privroot(struct dentry *dentry) | 874 | static 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 | ||
937 | int 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 */ |
955 | static int | 957 | static int |
956 | xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name) | 958 | xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name) |