Lines Matching refs:inode

35 static struct posix_acl **acl_by_type(struct inode *inode, int type)  in acl_by_type()  argument
39 return &inode->i_acl; in acl_by_type()
41 return &inode->i_default_acl; in acl_by_type()
47 struct posix_acl *get_cached_acl(struct inode *inode, int type) in get_cached_acl() argument
49 struct posix_acl **p = acl_by_type(inode, type); in get_cached_acl()
66 struct posix_acl *get_cached_acl_rcu(struct inode *inode, int type) in get_cached_acl_rcu() argument
68 struct posix_acl *acl = rcu_dereference(*acl_by_type(inode, type)); in get_cached_acl_rcu()
73 ret = inode->i_op->get_inode_acl(inode, type, LOOKUP_RCU); in get_cached_acl_rcu()
82 void set_cached_acl(struct inode *inode, int type, struct posix_acl *acl) in set_cached_acl() argument
84 struct posix_acl **p = acl_by_type(inode, type); in set_cached_acl()
102 void forget_cached_acl(struct inode *inode, int type) in forget_cached_acl() argument
104 __forget_cached_acl(acl_by_type(inode, type)); in forget_cached_acl()
108 void forget_all_cached_acls(struct inode *inode) in forget_all_cached_acls() argument
110 __forget_cached_acl(&inode->i_acl); in forget_all_cached_acls()
111 __forget_cached_acl(&inode->i_default_acl); in forget_all_cached_acls()
116 struct dentry *dentry, struct inode *inode, in __get_acl() argument
129 acl = get_cached_acl(inode, type); in __get_acl()
133 if (!IS_POSIXACL(inode)) in __get_acl()
137 p = acl_by_type(inode, type); in __get_acl()
157 if (dentry && inode->i_op->get_acl) { in __get_acl()
158 acl = inode->i_op->get_acl(idmap, dentry, type); in __get_acl()
159 } else if (inode->i_op->get_inode_acl) { in __get_acl()
160 acl = inode->i_op->get_inode_acl(inode, type, false); in __get_acl()
162 set_cached_acl(inode, type, NULL); in __get_acl()
183 struct posix_acl *get_inode_acl(struct inode *inode, int type) in get_inode_acl() argument
185 return __get_acl(&nop_mnt_idmap, NULL, inode, type); in get_inode_acl()
376 posix_acl_permission(struct mnt_idmap *idmap, struct inode *inode, in posix_acl_permission() argument
380 struct user_namespace *fs_userns = i_user_ns(inode); in posix_acl_permission()
391 vfsuid = i_uid_into_vfsuid(idmap, inode); in posix_acl_permission()
402 vfsgid = i_gid_into_vfsgid(idmap, inode); in posix_acl_permission()
609 struct inode *inode = d_inode(dentry); in posix_acl_chmod() local
613 if (!IS_POSIXACL(inode)) in posix_acl_chmod()
615 if (!inode->i_op->set_acl) in posix_acl_chmod()
618 acl = get_inode_acl(inode, ACL_TYPE_ACCESS); in posix_acl_chmod()
628 ret = inode->i_op->set_acl(idmap, dentry, acl, ACL_TYPE_ACCESS); in posix_acl_chmod()
635 posix_acl_create(struct inode *dir, umode_t *mode, in posix_acl_create()
708 struct inode *inode, umode_t *mode_p, in posix_acl_update_mode() argument
711 umode_t mode = inode->i_mode; in posix_acl_update_mode()
719 if (!vfsgid_in_group_p(i_gid_into_vfsgid(idmap, inode)) && in posix_acl_update_mode()
720 !capable_wrt_inode_uidgid(idmap, inode, CAP_FSETID)) in posix_acl_update_mode()
889 struct inode *inode, in vfs_posix_acl_to_xattr() argument
910 fs_userns = i_user_ns(inode); in vfs_posix_acl_to_xattr()
939 struct inode *inode = d_inode(dentry); in set_posix_acl() local
941 if (!IS_POSIXACL(inode)) in set_posix_acl()
943 if (!inode->i_op->set_acl) in set_posix_acl()
946 if (type == ACL_TYPE_DEFAULT && !S_ISDIR(inode->i_mode)) in set_posix_acl()
948 if (!inode_owner_or_capable(idmap, inode)) in set_posix_acl()
952 int ret = posix_acl_valid(inode->i_sb->s_user_ns, acl); in set_posix_acl()
956 return inode->i_op->set_acl(idmap, dentry, acl, type); in set_posix_acl()
960 int posix_acl_listxattr(struct inode *inode, char **buffer, in posix_acl_listxattr() argument
965 if (!IS_POSIXACL(inode)) in posix_acl_listxattr()
968 if (inode->i_acl) { in posix_acl_listxattr()
975 if (inode->i_default_acl) { in posix_acl_listxattr()
1021 struct inode *inode = d_inode(dentry); in simple_set_acl() local
1024 error = posix_acl_update_mode(idmap, inode, in simple_set_acl()
1025 &inode->i_mode, &acl); in simple_set_acl()
1030 inode_set_ctime_current(inode); in simple_set_acl()
1031 if (IS_I_VERSION(inode)) in simple_set_acl()
1032 inode_inc_iversion(inode); in simple_set_acl()
1033 set_cached_acl(inode, type, acl); in simple_set_acl()
1037 int simple_acl_create(struct inode *dir, struct inode *inode) in simple_acl_create() argument
1042 error = posix_acl_create(dir, &inode->i_mode, &default_acl, &acl); in simple_acl_create()
1046 set_cached_acl(inode, ACL_TYPE_DEFAULT, default_acl); in simple_acl_create()
1047 set_cached_acl(inode, ACL_TYPE_ACCESS, acl); in simple_acl_create()
1095 struct inode *inode = d_inode(dentry); in vfs_set_acl() local
1096 struct inode *delegated_inode = NULL; in vfs_set_acl()
1110 error = vfs_set_acl_idmapped_mnt(idmap, i_user_ns(inode), kacl); in vfs_set_acl()
1116 inode_lock(inode); in vfs_set_acl()
1122 error = may_write_xattr(idmap, inode); in vfs_set_acl()
1130 error = try_break_deleg(inode, &delegated_inode); in vfs_set_acl()
1134 if (likely(!is_bad_inode(inode))) in vfs_set_acl()
1144 inode_unlock(inode); in vfs_set_acl()
1170 struct inode *inode = d_inode(dentry); in vfs_get_acl() local
1186 if (!IS_POSIXACL(inode)) in vfs_get_acl()
1188 if (S_ISLNK(inode->i_mode)) in vfs_get_acl()
1191 acl = __get_acl(idmap, dentry, inode, acl_type); in vfs_get_acl()
1216 struct inode *inode = d_inode(dentry); in vfs_remove_acl() local
1217 struct inode *delegated_inode = NULL; in vfs_remove_acl()
1224 inode_lock(inode); in vfs_remove_acl()
1230 error = may_write_xattr(idmap, inode); in vfs_remove_acl()
1238 error = try_break_deleg(inode, &delegated_inode); in vfs_remove_acl()
1242 if (likely(!is_bad_inode(inode))) in vfs_remove_acl()
1252 inode_unlock(inode); in vfs_remove_acl()