aboutsummaryrefslogtreecommitdiffstats
path: root/mm/shmem_acl.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/shmem_acl.c')
-rw-r--r--mm/shmem_acl.c78
1 files changed, 20 insertions, 58 deletions
diff --git a/mm/shmem_acl.c b/mm/shmem_acl.c
index df2c87fdae50..f8d5330ec0d7 100644
--- a/mm/shmem_acl.c
+++ b/mm/shmem_acl.c
@@ -63,86 +63,48 @@ struct generic_acl_operations shmem_acl_ops = {
63 .setacl = shmem_set_acl, 63 .setacl = shmem_set_acl,
64}; 64};
65 65
66/**
67 * shmem_list_acl_access, shmem_get_acl_access, shmem_set_acl_access,
68 * shmem_xattr_acl_access_handler - plumbing code to implement the
69 * system.posix_acl_access xattr using the generic acl functions.
70 */
71
72static size_t 66static size_t
73shmem_list_acl_access(struct inode *inode, char *list, size_t list_size, 67shmem_xattr_list_acl(struct dentry *dentry, char *list, size_t list_size,
74 const char *name, size_t name_len) 68 const char *name, size_t name_len, int type)
75{ 69{
76 return generic_acl_list(inode, &shmem_acl_ops, ACL_TYPE_ACCESS, 70 return generic_acl_list(dentry->d_inode, &shmem_acl_ops,
77 list, list_size); 71 type, list, list_size);
78} 72}
79 73
80static int 74static int
81shmem_get_acl_access(struct inode *inode, const char *name, void *buffer, 75shmem_xattr_get_acl(struct dentry *dentry, const char *name, void *buffer,
82 size_t size) 76 size_t size, int type)
83{ 77{
84 if (strcmp(name, "") != 0) 78 if (strcmp(name, "") != 0)
85 return -EINVAL; 79 return -EINVAL;
86 return generic_acl_get(inode, &shmem_acl_ops, ACL_TYPE_ACCESS, buffer, 80 return generic_acl_get(dentry->d_inode, &shmem_acl_ops, type,
87 size); 81 buffer, size);
88} 82}
89 83
90static int 84static int
91shmem_set_acl_access(struct inode *inode, const char *name, const void *value, 85shmem_xattr_set_acl(struct dentry *dentry, const char *name, const void *value,
92 size_t size, int flags) 86 size_t size, int flags, int type)
93{ 87{
94 if (strcmp(name, "") != 0) 88 if (strcmp(name, "") != 0)
95 return -EINVAL; 89 return -EINVAL;
96 return generic_acl_set(inode, &shmem_acl_ops, ACL_TYPE_ACCESS, value, 90 return generic_acl_set(dentry->d_inode, &shmem_acl_ops, type,
97 size); 91 value, size);
98} 92}
99 93
100struct xattr_handler shmem_xattr_acl_access_handler = { 94struct xattr_handler shmem_xattr_acl_access_handler = {
101 .prefix = POSIX_ACL_XATTR_ACCESS, 95 .prefix = POSIX_ACL_XATTR_ACCESS,
102 .list = shmem_list_acl_access, 96 .flags = ACL_TYPE_ACCESS,
103 .get = shmem_get_acl_access, 97 .list = shmem_xattr_list_acl,
104 .set = shmem_set_acl_access, 98 .get = shmem_xattr_get_acl,
99 .set = shmem_xattr_set_acl,
105}; 100};
106 101
107/**
108 * shmem_list_acl_default, shmem_get_acl_default, shmem_set_acl_default,
109 * shmem_xattr_acl_default_handler - plumbing code to implement the
110 * system.posix_acl_default xattr using the generic acl functions.
111 */
112
113static size_t
114shmem_list_acl_default(struct inode *inode, char *list, size_t list_size,
115 const char *name, size_t name_len)
116{
117 return generic_acl_list(inode, &shmem_acl_ops, ACL_TYPE_DEFAULT,
118 list, list_size);
119}
120
121static int
122shmem_get_acl_default(struct inode *inode, const char *name, void *buffer,
123 size_t size)
124{
125 if (strcmp(name, "") != 0)
126 return -EINVAL;
127 return generic_acl_get(inode, &shmem_acl_ops, ACL_TYPE_DEFAULT, buffer,
128 size);
129}
130
131static int
132shmem_set_acl_default(struct inode *inode, const char *name, const void *value,
133 size_t size, int flags)
134{
135 if (strcmp(name, "") != 0)
136 return -EINVAL;
137 return generic_acl_set(inode, &shmem_acl_ops, ACL_TYPE_DEFAULT, value,
138 size);
139}
140
141struct xattr_handler shmem_xattr_acl_default_handler = { 102struct xattr_handler shmem_xattr_acl_default_handler = {
142 .prefix = POSIX_ACL_XATTR_DEFAULT, 103 .prefix = POSIX_ACL_XATTR_DEFAULT,
143 .list = shmem_list_acl_default, 104 .flags = ACL_TYPE_DEFAULT,
144 .get = shmem_get_acl_default, 105 .list = shmem_xattr_list_acl,
145 .set = shmem_set_acl_default, 106 .get = shmem_xattr_get_acl,
107 .set = shmem_xattr_set_acl,
146}; 108};
147 109
148/** 110/**