Lines Matching refs:acl
25 struct posix_acl *acl; in ext4_acl_from_disk() local
40 acl = posix_acl_alloc(count, GFP_NOFS); in ext4_acl_from_disk()
41 if (!acl) in ext4_acl_from_disk()
48 acl->a_entries[n].e_tag = le16_to_cpu(entry->e_tag); in ext4_acl_from_disk()
49 acl->a_entries[n].e_perm = le16_to_cpu(entry->e_perm); in ext4_acl_from_disk()
51 switch (acl->a_entries[n].e_tag) { in ext4_acl_from_disk()
58 acl->a_entries[n].e_id = ACL_UNDEFINED_ID; in ext4_acl_from_disk()
66 acl->a_entries[n].e_id = in ext4_acl_from_disk()
76 return acl; in ext4_acl_from_disk()
79 posix_acl_release(acl); in ext4_acl_from_disk()
87 ext4_acl_to_disk(const struct posix_acl *acl, size_t *size) in ext4_acl_to_disk() argument
93 *size = ext4_acl_size(acl->a_count); in ext4_acl_to_disk()
94 ext_acl = kmalloc(sizeof(ext4_acl_header) + acl->a_count * in ext4_acl_to_disk()
100 for (n = 0; n < acl->a_count; n++) { in ext4_acl_to_disk()
102 entry->e_tag = cpu_to_le16(acl->a_entries[n].e_tag); in ext4_acl_to_disk()
103 entry->e_perm = cpu_to_le16(acl->a_entries[n].e_perm); in ext4_acl_to_disk()
104 switch (acl->a_entries[n].e_tag) { in ext4_acl_to_disk()
107 entry->e_id = cpu_to_le32(acl->a_entries[n].e_id); in ext4_acl_to_disk()
132 struct posix_acl *acl = EXT4_ACL_NOT_CACHED; in ext4_iget_acl() local
136 acl = posix_acl_dup(*i_acl); in ext4_iget_acl()
139 return acl; in ext4_iget_acl()
144 struct posix_acl *acl) in ext4_iset_acl() argument
149 *i_acl = posix_acl_dup(acl); in ext4_iset_acl()
164 struct posix_acl *acl; in ext4_get_acl() local
172 acl = ext4_iget_acl(inode, &ei->i_acl); in ext4_get_acl()
173 if (acl != EXT4_ACL_NOT_CACHED) in ext4_get_acl()
174 return acl; in ext4_get_acl()
179 acl = ext4_iget_acl(inode, &ei->i_default_acl); in ext4_get_acl()
180 if (acl != EXT4_ACL_NOT_CACHED) in ext4_get_acl()
181 return acl; in ext4_get_acl()
196 acl = ext4_acl_from_disk(value, retval); in ext4_get_acl()
198 acl = NULL; in ext4_get_acl()
200 acl = ERR_PTR(retval); in ext4_get_acl()
203 if (!IS_ERR(acl)) { in ext4_get_acl()
206 ext4_iset_acl(inode, &ei->i_acl, acl); in ext4_get_acl()
210 ext4_iset_acl(inode, &ei->i_default_acl, acl); in ext4_get_acl()
214 return acl; in ext4_get_acl()
224 struct posix_acl *acl) in ext4_set_acl() argument
238 if (acl) { in ext4_set_acl()
240 error = posix_acl_equiv_mode(acl, &mode); in ext4_set_acl()
247 acl = NULL; in ext4_set_acl()
255 return acl ? -EACCES : 0; in ext4_set_acl()
261 if (acl) { in ext4_set_acl()
262 value = ext4_acl_to_disk(acl, &size); in ext4_set_acl()
274 ext4_iset_acl(inode, &ei->i_acl, acl); in ext4_set_acl()
278 ext4_iset_acl(inode, &ei->i_default_acl, acl); in ext4_set_acl()
288 struct posix_acl *acl = ext4_get_acl(inode, ACL_TYPE_ACCESS); in ext4_check_acl() local
290 if (IS_ERR(acl)) in ext4_check_acl()
291 return PTR_ERR(acl); in ext4_check_acl()
292 if (acl) { in ext4_check_acl()
293 int error = posix_acl_permission(inode, acl, mask); in ext4_check_acl()
294 posix_acl_release(acl); in ext4_check_acl()
316 struct posix_acl *acl = NULL; in ext4_init_acl() local
321 acl = ext4_get_acl(dir, ACL_TYPE_DEFAULT); in ext4_init_acl()
322 if (IS_ERR(acl)) in ext4_init_acl()
323 return PTR_ERR(acl); in ext4_init_acl()
325 if (!acl) in ext4_init_acl()
328 if (test_opt(inode->i_sb, POSIX_ACL) && acl) { in ext4_init_acl()
334 ACL_TYPE_DEFAULT, acl); in ext4_init_acl()
338 clone = posix_acl_clone(acl, GFP_NOFS); in ext4_init_acl()
356 posix_acl_release(acl); in ext4_init_acl()
377 struct posix_acl *acl, *clone; in ext4_acl_chmod() local
384 acl = ext4_get_acl(inode, ACL_TYPE_ACCESS); in ext4_acl_chmod()
385 if (IS_ERR(acl) || !acl) in ext4_acl_chmod()
386 return PTR_ERR(acl); in ext4_acl_chmod()
387 clone = posix_acl_clone(acl, GFP_KERNEL); in ext4_acl_chmod()
388 posix_acl_release(acl); in ext4_acl_chmod()
447 struct posix_acl *acl; in ext4_xattr_get_acl() local
453 acl = ext4_get_acl(inode, type); in ext4_xattr_get_acl()
454 if (IS_ERR(acl)) in ext4_xattr_get_acl()
455 return PTR_ERR(acl); in ext4_xattr_get_acl()
456 if (acl == NULL) in ext4_xattr_get_acl()
458 error = posix_acl_to_xattr(acl, buffer, size); in ext4_xattr_get_acl()
459 posix_acl_release(acl); in ext4_xattr_get_acl()
487 struct posix_acl *acl; in ext4_xattr_set_acl() local
496 acl = posix_acl_from_xattr(value, size); in ext4_xattr_set_acl()
497 if (IS_ERR(acl)) in ext4_xattr_set_acl()
498 return PTR_ERR(acl); in ext4_xattr_set_acl()
499 else if (acl) { in ext4_xattr_set_acl()
500 error = posix_acl_valid(acl); in ext4_xattr_set_acl()
505 acl = NULL; in ext4_xattr_set_acl()
511 error = ext4_set_acl(handle, inode, type, acl); in ext4_xattr_set_acl()
517 posix_acl_release(acl); in ext4_xattr_set_acl()