LCOV - code coverage report
Current view: top level - fs/ext4 - acl.h (source / functions) Hit Total Coverage
Test: gcov_data_raspi2_real_modules_combined.info Lines: 2 11 18.2 %
Date: 2020-09-30 20:25:40 Functions: 0 0 -
Branches: 1 10 10.0 %

           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                 :            : 

Generated by: LCOV version 1.14