aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/acl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/acl.c')
-rw-r--r--fs/btrfs/acl.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 2f865311460c..867eaf1f8efb 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -42,17 +42,18 @@ static void btrfs_update_cached_acl(struct inode *inode,
42 42
43static struct posix_acl *btrfs_get_acl(struct inode *inode, int type) 43static struct posix_acl *btrfs_get_acl(struct inode *inode, int type)
44{ 44{
45 int size, name_index; 45 int size;
46 const char *name;
46 char *value = NULL; 47 char *value = NULL;
47 struct posix_acl *acl = NULL, **p_acl; 48 struct posix_acl *acl = NULL, **p_acl;
48 49
49 switch (type) { 50 switch (type) {
50 case ACL_TYPE_ACCESS: 51 case ACL_TYPE_ACCESS:
51 name_index = BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS; 52 name = POSIX_ACL_XATTR_ACCESS;
52 p_acl = &BTRFS_I(inode)->i_acl; 53 p_acl = &BTRFS_I(inode)->i_acl;
53 break; 54 break;
54 case ACL_TYPE_DEFAULT: 55 case ACL_TYPE_DEFAULT:
55 name_index = BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT; 56 name = POSIX_ACL_XATTR_DEFAULT;
56 p_acl = &BTRFS_I(inode)->i_default_acl; 57 p_acl = &BTRFS_I(inode)->i_default_acl;
57 break; 58 break;
58 default: 59 default:
@@ -68,12 +69,12 @@ static struct posix_acl *btrfs_get_acl(struct inode *inode, int type)
68 return acl; 69 return acl;
69 70
70 71
71 size = btrfs_xattr_get(inode, name_index, "", NULL, 0); 72 size = __btrfs_getxattr(inode, name, "", 0);
72 if (size > 0) { 73 if (size > 0) {
73 value = kzalloc(size, GFP_NOFS); 74 value = kzalloc(size, GFP_NOFS);
74 if (!value) 75 if (!value)
75 return ERR_PTR(-ENOMEM); 76 return ERR_PTR(-ENOMEM);
76 size = btrfs_xattr_get(inode, name_index, "", value, size); 77 size = __btrfs_getxattr(inode, name, value, size);
77 if (size > 0) { 78 if (size > 0) {
78 acl = posix_acl_from_xattr(value, size); 79 acl = posix_acl_from_xattr(value, size);
79 btrfs_update_cached_acl(inode, p_acl, acl); 80 btrfs_update_cached_acl(inode, p_acl, acl);
@@ -110,7 +111,8 @@ static int btrfs_xattr_get_acl(struct inode *inode, int type,
110 */ 111 */
111static int btrfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) 112static int btrfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
112{ 113{
113 int ret, name_index = 0, size = 0; 114 int ret, size = 0;
115 const char *name;
114 struct posix_acl **p_acl; 116 struct posix_acl **p_acl;
115 char *value = NULL; 117 char *value = NULL;
116 mode_t mode; 118 mode_t mode;
@@ -130,13 +132,13 @@ static int btrfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
130 return ret; 132 return ret;
131 ret = 0; 133 ret = 0;
132 inode->i_mode = mode; 134 inode->i_mode = mode;
133 name_index = BTRFS_XATTR_INDEX_POSIX_ACL_ACCESS; 135 name = POSIX_ACL_XATTR_ACCESS;
134 p_acl = &BTRFS_I(inode)->i_acl; 136 p_acl = &BTRFS_I(inode)->i_acl;
135 break; 137 break;
136 case ACL_TYPE_DEFAULT: 138 case ACL_TYPE_DEFAULT:
137 if (!S_ISDIR(inode->i_mode)) 139 if (!S_ISDIR(inode->i_mode))
138 return acl ? -EINVAL : 0; 140 return acl ? -EINVAL : 0;
139 name_index = BTRFS_XATTR_INDEX_POSIX_ACL_DEFAULT; 141 name = POSIX_ACL_XATTR_DEFAULT;
140 p_acl = &BTRFS_I(inode)->i_default_acl; 142 p_acl = &BTRFS_I(inode)->i_default_acl;
141 break; 143 break;
142 default: 144 default:
@@ -156,7 +158,7 @@ static int btrfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
156 goto out; 158 goto out;
157 } 159 }
158 160
159 ret = btrfs_xattr_set(inode, name_index, "", value, size, 0); 161 ret = __btrfs_setxattr(inode, name, value, size, 0);
160 162
161out: 163out:
162 if (value) 164 if (value)