Branch data Line data Source code
1 : : // SPDX-License-Identifier: GPL-2.0 2 : : /* 3 : : File: fs/ext4/acl.h 4 : : 5 : : (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org> 6 : : */ 7 : : 8 : : #include <linux/posix_acl_xattr.h> 9 : : 10 : : #define EXT4_ACL_VERSION 0x0001 11 : : 12 : : typedef struct { 13 : : __le16 e_tag; 14 : : __le16 e_perm; 15 : : __le32 e_id; 16 : : } ext4_acl_entry; 17 : : 18 : : typedef struct { 19 : : __le16 e_tag; 20 : : __le16 e_perm; 21 : : } ext4_acl_entry_short; 22 : : 23 : : typedef struct { 24 : : __le32 a_version; 25 : : } ext4_acl_header; 26 : : 27 : : static inline size_t ext4_acl_size(int count) 28 : : { 29 [ + - # # ]: 11 : if (count <= 4) { 30 : 11 : return sizeof(ext4_acl_header) + 31 : : count * sizeof(ext4_acl_entry_short); 32 : : } else { 33 : 0 : return sizeof(ext4_acl_header) + 34 : : 4 * sizeof(ext4_acl_entry_short) + 35 : 0 : (count - 4) * sizeof(ext4_acl_entry); 36 : : } 37 : : } 38 : : 39 : : static inline int ext4_acl_count(size_t size) 40 : : { 41 : : ssize_t s; 42 : 0 : size -= sizeof(ext4_acl_header); 43 : 0 : s = size - 4 * sizeof(ext4_acl_entry_short); 44 [ # # ]: 0 : if (s < 0) { 45 [ # # ]: 0 : if (size % sizeof(ext4_acl_entry_short)) 46 : : return -1; 47 : 0 : return size / sizeof(ext4_acl_entry_short); 48 : : } else { 49 [ # # ]: 0 : if (s % sizeof(ext4_acl_entry)) 50 : : return -1; 51 : 0 : return s / sizeof(ext4_acl_entry) + 4; 52 : : } 53 : : } 54 : : 55 : : #ifdef CONFIG_EXT4_FS_POSIX_ACL 56 : : 57 : : /* acl.c */ 58 : : struct posix_acl *ext4_get_acl(struct inode *inode, int type); 59 : : int ext4_set_acl(struct inode *inode, struct posix_acl *acl, int type); 60 : : extern int ext4_init_acl(handle_t *, struct inode *, struct inode *); 61 : : 62 : : #else /* CONFIG_EXT4_FS_POSIX_ACL */ 63 : : #include <linux/sched.h> 64 : : #define ext4_get_acl NULL 65 : : #define ext4_set_acl NULL 66 : : 67 : : static inline int 68 : : ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir) 69 : : { 70 : : return 0; 71 : : } 72 : : #endif /* CONFIG_EXT4_FS_POSIX_ACL */ 73 : :