Lines Matching full:acl

20  *  - ACL entries in the kernel are kept sorted in ascending order
37 struct posix_acl *acl; member
44 struct posix_acl acl; member
56 &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; in xdr_nfsace_encode()
81 * nfsacl_encode - Encode an NFSv3 ACL
83 * @buf: destination xdr_buf to contain XDR encoded ACL
84 * @base: byte offset in xdr_buf where XDR'd ACL begins
85 * @inode: inode of file whose ACL this is
86 * @acl: posix_acl to encode
88 * @typeflag: ACL type: NFS_ACL_DEFAULT or zero
90 * Returns size of encoded ACL in bytes or a negative errno value.
93 struct posix_acl *acl, int encode_entries, int typeflag) in nfsacl_encode() argument
95 int entries = (acl && acl->a_count) ? max_t(int, acl->a_count, 4) : 0; in nfsacl_encode()
102 .acl = acl, in nfsacl_encode()
113 if (encode_entries && acl && acl->a_count == 3) { in nfsacl_encode()
114 struct posix_acl *acl2 = &aclbuf.acl; in nfsacl_encode()
118 * fatal. Fortunately this fake ACL is small enough to in nfsacl_encode()
124 acl2->a_entries[0] = acl->a_entries[0]; /* ACL_USER_OBJ */ in nfsacl_encode()
125 acl2->a_entries[1] = acl->a_entries[1]; /* ACL_GROUP_OBJ */ in nfsacl_encode()
126 acl2->a_entries[2] = acl->a_entries[1]; /* ACL_MASK */ in nfsacl_encode()
128 acl2->a_entries[3] = acl->a_entries[2]; /* ACL_OTHER */ in nfsacl_encode()
129 nfsacl_desc.acl = acl2; in nfsacl_encode()
140 * nfs_stream_encode_acl - Encode an NFSv3 ACL
142 * @xdr: an xdr_stream positioned to receive an encoded ACL
143 * @inode: inode of file whose ACL this is
144 * @acl: posix_acl to encode
146 * @typeflag: ACL type: NFS_ACL_DEFAULT or zero
149 * %false: The ACL could not be encoded
153 struct posix_acl *acl, int encode_entries, in nfs_stream_encode_acl() argument
157 u32 entries = (acl && acl->a_count) ? max_t(int, acl->a_count, 4) : 0; in nfs_stream_encode_acl()
164 .acl = acl, in nfs_stream_encode_acl()
178 if (encode_entries && acl && acl->a_count == 3) { in nfs_stream_encode_acl()
179 struct posix_acl *acl2 = &aclbuf.acl; in nfs_stream_encode_acl()
183 * fatal. Fortunately this fake ACL is small enough to in nfs_stream_encode_acl()
189 acl2->a_entries[0] = acl->a_entries[0]; /* ACL_USER_OBJ */ in nfs_stream_encode_acl()
190 acl2->a_entries[1] = acl->a_entries[1]; /* ACL_GROUP_OBJ */ in nfs_stream_encode_acl()
191 acl2->a_entries[2] = acl->a_entries[1]; /* ACL_MASK */ in nfs_stream_encode_acl()
193 acl2->a_entries[3] = acl->a_entries[2]; /* ACL_OTHER */ in nfs_stream_encode_acl()
194 nfsacl_desc.acl = acl2; in nfs_stream_encode_acl()
213 struct posix_acl *acl; member
225 if (!nfsacl_desc->acl) { in xdr_nfsace_decode()
228 nfsacl_desc->acl = posix_acl_alloc(desc->array_len, GFP_KERNEL); in xdr_nfsace_decode()
229 if (!nfsacl_desc->acl) in xdr_nfsace_decode()
234 entry = &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; in xdr_nfsace_decode()
287 * Convert from a Solaris ACL to a POSIX 1003.1e draft 17 ACL.
290 posix_acl_from_nfsacl(struct posix_acl *acl) in posix_acl_from_nfsacl() argument
295 if (!acl) in posix_acl_from_nfsacl()
298 sort(acl->a_entries, acl->a_count, sizeof(struct posix_acl_entry), in posix_acl_from_nfsacl()
302 FOREACH_ACL_ENTRY(pa, acl, pe) { in posix_acl_from_nfsacl()
316 if (acl->a_count == 4 && group_obj && mask && in posix_acl_from_nfsacl()
319 memmove(mask, mask+1, (3 - (mask - acl->a_entries)) * in posix_acl_from_nfsacl()
321 acl->a_count = 3; in posix_acl_from_nfsacl()
327 * nfsacl_decode - Decode an NFSv3 ACL
329 * @buf: xdr_buf containing XDR'd ACL data to decode
330 * @base: byte offset in xdr_buf where XDR'd ACL begins
334 * Returns the length of the decoded ACL in bytes, or a negative errno value.
357 posix_acl_from_nfsacl(nfsacl_desc.acl) != 0) { in nfsacl_decode()
358 posix_acl_release(nfsacl_desc.acl); in nfsacl_decode()
361 *pacl = nfsacl_desc.acl; in nfsacl_decode()
371 * nfs_stream_decode_acl - Decode an NFSv3 ACL
373 * @xdr: an xdr_stream positioned at an encoded ACL
378 * %false: The encoded ACL is not valid
379 * %true: @pacl contains a decoded ACL, and @xdr is advanced
410 posix_acl_from_nfsacl(nfsacl_desc.acl) != 0) { in nfs_stream_decode_acl()
411 posix_acl_release(nfsacl_desc.acl); in nfs_stream_decode_acl()
414 *pacl = nfsacl_desc.acl; in nfs_stream_decode_acl()