8 #ifndef __LINUX_POSIX_ACL_H
9 #define __LINUX_POSIX_ACL_H
12 #include <linux/slab.h>
15 #define ACL_UNDEFINED_ID (-1)
18 #define ACL_TYPE_ACCESS (0x8000)
19 #define ACL_TYPE_DEFAULT (0x4000)
22 #define ACL_USER_OBJ (0x01)
23 #define ACL_USER (0x02)
24 #define ACL_GROUP_OBJ (0x04)
25 #define ACL_GROUP (0x08)
26 #define ACL_MASK (0x10)
27 #define ACL_OTHER (0x20)
30 #define ACL_READ (0x04)
31 #define ACL_WRITE (0x02)
32 #define ACL_EXECUTE (0x01)
42 #ifndef CONFIG_UIDGID_STRICT_TYPE_CHECKS
57 #define FOREACH_ACL_ENTRY(pa, acl, pe) \
58 for(pa=(acl)->a_entries, pe=pa+(acl)->a_count; pa<pe; pa++)
97 #ifdef CONFIG_FS_POSIX_ACL
102 return &inode->i_acl;
104 return &inode->i_default_acl;
110 static inline struct posix_acl *get_cached_acl(
struct inode *inode,
int type)
112 struct posix_acl **
p = acl_by_type(inode, type);
115 spin_lock(&inode->
i_lock);
118 acl = posix_acl_dup(acl);
119 spin_unlock(&inode->
i_lock);
124 static inline struct posix_acl *get_cached_acl_rcu(
struct inode *inode,
int type)
129 static inline void set_cached_acl(
struct inode *inode,
133 struct posix_acl **p = acl_by_type(inode, type);
135 spin_lock(&inode->
i_lock);
138 spin_unlock(&inode->
i_lock);
140 posix_acl_release(old);
143 static inline void forget_cached_acl(
struct inode *inode,
int type)
145 struct posix_acl **p = acl_by_type(inode, type);
147 spin_lock(&inode->
i_lock);
150 spin_unlock(&inode->
i_lock);
152 posix_acl_release(old);
155 static inline void forget_all_cached_acls(
struct inode *inode)
157 struct posix_acl *old_access, *old_default;
158 spin_lock(&inode->
i_lock);
159 old_access = inode->i_acl;
160 old_default = inode->i_default_acl;
162 spin_unlock(&inode->
i_lock);
164 posix_acl_release(old_access);
166 posix_acl_release(old_default);
170 static inline void cache_no_acl(
struct inode *inode)
172 #ifdef CONFIG_FS_POSIX_ACL
174 inode->i_default_acl =
NULL;