LCOV - code coverage report
Current view: top level - security - security.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 204 501 40.7 %
Date: 2014-02-18 Functions: 136 194 70.1 %
Branches: 57 119 47.9 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Security plug functions
       3                 :            :  *
       4                 :            :  * Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com>
       5                 :            :  * Copyright (C) 2001-2002 Greg Kroah-Hartman <greg@kroah.com>
       6                 :            :  * Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com>
       7                 :            :  *
       8                 :            :  *      This program is free software; you can redistribute it and/or modify
       9                 :            :  *      it under the terms of the GNU General Public License as published by
      10                 :            :  *      the Free Software Foundation; either version 2 of the License, or
      11                 :            :  *      (at your option) any later version.
      12                 :            :  */
      13                 :            : 
      14                 :            : #include <linux/capability.h>
      15                 :            : #include <linux/dcache.h>
      16                 :            : #include <linux/module.h>
      17                 :            : #include <linux/init.h>
      18                 :            : #include <linux/kernel.h>
      19                 :            : #include <linux/security.h>
      20                 :            : #include <linux/integrity.h>
      21                 :            : #include <linux/ima.h>
      22                 :            : #include <linux/evm.h>
      23                 :            : #include <linux/fsnotify.h>
      24                 :            : #include <linux/mman.h>
      25                 :            : #include <linux/mount.h>
      26                 :            : #include <linux/personality.h>
      27                 :            : #include <linux/backing-dev.h>
      28                 :            : #include <net/flow.h>
      29                 :            : 
      30                 :            : #define MAX_LSM_EVM_XATTR       2
      31                 :            : 
      32                 :            : /* Boot-time LSM user choice */
      33                 :            : static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] =
      34                 :            :         CONFIG_DEFAULT_SECURITY;
      35                 :            : 
      36                 :            : static struct security_operations *security_ops;
      37                 :            : static struct security_operations default_security_ops = {
      38                 :            :         .name   = "default",
      39                 :            : };
      40                 :            : 
      41                 :            : static inline int __init verify(struct security_operations *ops)
      42                 :            : {
      43                 :            :         /* verify the security_operations structure exists */
      44         [ #  # ]:          0 :         if (!ops)
      45                 :            :                 return -EINVAL;
      46                 :          0 :         security_fixup_ops(ops);
      47                 :            :         return 0;
      48                 :            : }
      49                 :            : 
      50                 :          0 : static void __init do_security_initcalls(void)
      51                 :            : {
      52                 :            :         initcall_t *call;
      53                 :            :         call = __security_initcall_start;
      54         [ #  # ]:          0 :         while (call < __security_initcall_end) {
      55                 :          0 :                 (*call) ();
      56                 :          0 :                 call++;
      57                 :            :         }
      58                 :          0 : }
      59                 :            : 
      60                 :            : /**
      61                 :            :  * security_init - initializes the security framework
      62                 :            :  *
      63                 :            :  * This should be called early in the kernel initialization sequence.
      64                 :            :  */
      65                 :          0 : int __init security_init(void)
      66                 :            : {
      67                 :          0 :         printk(KERN_INFO "Security Framework initialized\n");
      68                 :            : 
      69                 :          0 :         security_fixup_ops(&default_security_ops);
      70                 :          0 :         security_ops = &default_security_ops;
      71                 :          0 :         do_security_initcalls();
      72                 :            : 
      73                 :          0 :         return 0;
      74                 :            : }
      75                 :            : 
      76                 :          0 : void reset_security_ops(void)
      77                 :            : {
      78                 :          0 :         security_ops = &default_security_ops;
      79                 :          0 : }
      80                 :            : 
      81                 :            : /* Save user chosen LSM */
      82                 :          0 : static int __init choose_lsm(char *str)
      83                 :            : {
      84                 :          0 :         strncpy(chosen_lsm, str, SECURITY_NAME_MAX);
      85                 :          0 :         return 1;
      86                 :            : }
      87                 :            : __setup("security=", choose_lsm);
      88                 :            : 
      89                 :            : /**
      90                 :            :  * security_module_enable - Load given security module on boot ?
      91                 :            :  * @ops: a pointer to the struct security_operations that is to be checked.
      92                 :            :  *
      93                 :            :  * Each LSM must pass this method before registering its own operations
      94                 :            :  * to avoid security registration races. This method may also be used
      95                 :            :  * to check if your LSM is currently loaded during kernel initialization.
      96                 :            :  *
      97                 :            :  * Return true if:
      98                 :            :  *      -The passed LSM is the one chosen by user at boot time,
      99                 :            :  *      -or the passed LSM is configured as the default and the user did not
     100                 :            :  *       choose an alternate LSM at boot time.
     101                 :            :  * Otherwise, return false.
     102                 :            :  */
     103                 :          0 : int __init security_module_enable(struct security_operations *ops)
     104                 :            : {
     105                 :          0 :         return !strcmp(ops->name, chosen_lsm);
     106                 :            : }
     107                 :            : 
     108                 :            : /**
     109                 :            :  * register_security - registers a security framework with the kernel
     110                 :            :  * @ops: a pointer to the struct security_options that is to be registered
     111                 :            :  *
     112                 :            :  * This function allows a security module to register itself with the
     113                 :            :  * kernel security subsystem.  Some rudimentary checking is done on the @ops
     114                 :            :  * value passed to this function. You'll need to check first if your LSM
     115                 :            :  * is allowed to register its @ops by calling security_module_enable(@ops).
     116                 :            :  *
     117                 :            :  * If there is already a security module registered with the kernel,
     118                 :            :  * an error will be returned.  Otherwise %0 is returned on success.
     119                 :            :  */
     120                 :          0 : int __init register_security(struct security_operations *ops)
     121                 :            : {
     122         [ #  # ]:          0 :         if (verify(ops)) {
     123                 :          0 :                 printk(KERN_DEBUG "%s could not verify "
     124                 :            :                        "security_operations structure.\n", __func__);
     125                 :          0 :                 return -EINVAL;
     126                 :            :         }
     127                 :            : 
     128         [ #  # ]:          0 :         if (security_ops != &default_security_ops)
     129                 :            :                 return -EAGAIN;
     130                 :            : 
     131                 :          0 :         security_ops = ops;
     132                 :            : 
     133                 :          0 :         return 0;
     134                 :            : }
     135                 :            : 
     136                 :            : /* Security operations */
     137                 :            : 
     138                 :          0 : int security_binder_set_context_mgr(struct task_struct *mgr)
     139                 :            : {
     140                 :          0 :         return security_ops->binder_set_context_mgr(mgr);
     141                 :            : }
     142                 :            : 
     143                 :          0 : int security_binder_transaction(struct task_struct *from, struct task_struct *to)
     144                 :            : {
     145                 :          0 :         return security_ops->binder_transaction(from, to);
     146                 :            : }
     147                 :            : 
     148                 :          0 : int security_binder_transfer_binder(struct task_struct *from, struct task_struct *to)
     149                 :            : {
     150                 :          0 :         return security_ops->binder_transfer_binder(from, to);
     151                 :            : }
     152                 :            : 
     153                 :          0 : int security_binder_transfer_file(struct task_struct *from, struct task_struct *to, struct file *file)
     154                 :            : {
     155                 :          0 :         return security_ops->binder_transfer_file(from, to, file);
     156                 :            : }
     157                 :            : 
     158                 :          0 : int security_ptrace_access_check(struct task_struct *child, unsigned int mode)
     159                 :            : {
     160                 :            : #ifdef CONFIG_SECURITY_YAMA_STACKED
     161                 :            :         int rc;
     162                 :            :         rc = yama_ptrace_access_check(child, mode);
     163                 :            :         if (rc)
     164                 :            :                 return rc;
     165                 :            : #endif
     166                 :      73654 :         return security_ops->ptrace_access_check(child, mode);
     167                 :            : }
     168                 :            : 
     169                 :          0 : int security_ptrace_traceme(struct task_struct *parent)
     170                 :            : {
     171                 :            : #ifdef CONFIG_SECURITY_YAMA_STACKED
     172                 :            :         int rc;
     173                 :            :         rc = yama_ptrace_traceme(parent);
     174                 :            :         if (rc)
     175                 :            :                 return rc;
     176                 :            : #endif
     177                 :        102 :         return security_ops->ptrace_traceme(parent);
     178                 :            : }
     179                 :            : 
     180                 :          0 : int security_capget(struct task_struct *target,
     181                 :            :                      kernel_cap_t *effective,
     182                 :            :                      kernel_cap_t *inheritable,
     183                 :            :                      kernel_cap_t *permitted)
     184                 :            : {
     185                 :          4 :         return security_ops->capget(target, effective, inheritable, permitted);
     186                 :            : }
     187                 :            : 
     188                 :          0 : int security_capset(struct cred *new, const struct cred *old,
     189                 :            :                     const kernel_cap_t *effective,
     190                 :            :                     const kernel_cap_t *inheritable,
     191                 :            :                     const kernel_cap_t *permitted)
     192                 :            : {
     193                 :          1 :         return security_ops->capset(new, old,
     194                 :            :                                     effective, inheritable, permitted);
     195                 :            : }
     196                 :            : 
     197                 :          0 : int security_capable(const struct cred *cred, struct user_namespace *ns,
     198                 :            :                      int cap)
     199                 :            : {
     200                 :      60146 :         return security_ops->capable(cred, ns, cap, SECURITY_CAP_AUDIT);
     201                 :            : }
     202                 :            : 
     203                 :          0 : int security_capable_noaudit(const struct cred *cred, struct user_namespace *ns,
     204                 :            :                              int cap)
     205                 :            : {
     206                 :      51524 :         return security_ops->capable(cred, ns, cap, SECURITY_CAP_NOAUDIT);
     207                 :            : }
     208                 :            : 
     209                 :          0 : int security_quotactl(int cmds, int type, int id, struct super_block *sb)
     210                 :            : {
     211                 :          0 :         return security_ops->quotactl(cmds, type, id, sb);
     212                 :            : }
     213                 :            : 
     214                 :          0 : int security_quota_on(struct dentry *dentry)
     215                 :            : {
     216                 :          0 :         return security_ops->quota_on(dentry);
     217                 :            : }
     218                 :            : 
     219                 :          0 : int security_syslog(int type)
     220                 :            : {
     221                 :       1456 :         return security_ops->syslog(type);
     222                 :            : }
     223                 :            : 
     224                 :          0 : int security_settime(const struct timespec *ts, const struct timezone *tz)
     225                 :            : {
     226                 :         13 :         return security_ops->settime(ts, tz);
     227                 :            : }
     228                 :            : 
     229                 :          0 : int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
     230                 :            : {
     231                 :   16880873 :         return security_ops->vm_enough_memory(mm, pages);
     232                 :            : }
     233                 :            : 
     234                 :          0 : int security_bprm_set_creds(struct linux_binprm *bprm)
     235                 :            : {
     236                 :      60118 :         return security_ops->bprm_set_creds(bprm);
     237                 :            : }
     238                 :            : 
     239                 :          0 : int security_bprm_check(struct linux_binprm *bprm)
     240                 :            : {
     241                 :            :         int ret;
     242                 :            : 
     243                 :      60170 :         ret = security_ops->bprm_check_security(bprm);
     244         [ -  + ]:      60164 :         if (ret)
     245                 :          0 :                 return ret;
     246                 :            :         return ima_bprm_check(bprm);
     247                 :            : }
     248                 :            : 
     249                 :          0 : void security_bprm_committing_creds(struct linux_binprm *bprm)
     250                 :            : {
     251                 :      58976 :         security_ops->bprm_committing_creds(bprm);
     252                 :      58976 : }
     253                 :            : 
     254                 :          0 : void security_bprm_committed_creds(struct linux_binprm *bprm)
     255                 :            : {
     256                 :      58976 :         security_ops->bprm_committed_creds(bprm);
     257                 :      58976 : }
     258                 :            : 
     259                 :          0 : int security_bprm_secureexec(struct linux_binprm *bprm)
     260                 :            : {
     261                 :      58976 :         return security_ops->bprm_secureexec(bprm);
     262                 :            : }
     263                 :            : 
     264                 :          0 : int security_sb_alloc(struct super_block *sb)
     265                 :            : {
     266                 :          3 :         return security_ops->sb_alloc_security(sb);
     267                 :            : }
     268                 :            : 
     269                 :          0 : void security_sb_free(struct super_block *sb)
     270                 :            : {
     271                 :          3 :         security_ops->sb_free_security(sb);
     272                 :          3 : }
     273                 :            : 
     274                 :          0 : int security_sb_copy_data(char *orig, char *copy)
     275                 :            : {
     276                 :          3 :         return security_ops->sb_copy_data(orig, copy);
     277                 :            : }
     278                 :            : EXPORT_SYMBOL(security_sb_copy_data);
     279                 :            : 
     280                 :          0 : int security_sb_remount(struct super_block *sb, void *data)
     281                 :            : {
     282                 :          4 :         return security_ops->sb_remount(sb, data);
     283                 :            : }
     284                 :            : 
     285                 :          0 : int security_sb_kern_mount(struct super_block *sb, int flags, void *data)
     286                 :            : {
     287                 :          3 :         return security_ops->sb_kern_mount(sb, flags, data);
     288                 :            : }
     289                 :            : 
     290                 :          0 : int security_sb_show_options(struct seq_file *m, struct super_block *sb)
     291                 :            : {
     292                 :       2588 :         return security_ops->sb_show_options(m, sb);
     293                 :            : }
     294                 :            : 
     295                 :          0 : int security_sb_statfs(struct dentry *dentry)
     296                 :            : {
     297                 :      19920 :         return security_ops->sb_statfs(dentry);
     298                 :            : }
     299                 :            : 
     300                 :          0 : int security_sb_mount(const char *dev_name, struct path *path,
     301                 :            :                        const char *type, unsigned long flags, void *data)
     302                 :            : {
     303                 :       6308 :         return security_ops->sb_mount(dev_name, path, type, flags, data);
     304                 :            : }
     305                 :            : 
     306                 :          0 : int security_sb_umount(struct vfsmount *mnt, int flags)
     307                 :            : {
     308                 :        837 :         return security_ops->sb_umount(mnt, flags);
     309                 :            : }
     310                 :            : 
     311                 :          0 : int security_sb_pivotroot(struct path *old_path, struct path *new_path)
     312                 :            : {
     313                 :          0 :         return security_ops->sb_pivotroot(old_path, new_path);
     314                 :            : }
     315                 :            : 
     316                 :          0 : int security_sb_set_mnt_opts(struct super_block *sb,
     317                 :            :                                 struct security_mnt_opts *opts,
     318                 :            :                                 unsigned long kern_flags,
     319                 :            :                                 unsigned long *set_kern_flags)
     320                 :            : {
     321                 :          0 :         return security_ops->sb_set_mnt_opts(sb, opts, kern_flags,
     322                 :            :                                                 set_kern_flags);
     323                 :            : }
     324                 :            : EXPORT_SYMBOL(security_sb_set_mnt_opts);
     325                 :            : 
     326                 :          0 : int security_sb_clone_mnt_opts(const struct super_block *oldsb,
     327                 :            :                                 struct super_block *newsb)
     328                 :            : {
     329                 :          0 :         return security_ops->sb_clone_mnt_opts(oldsb, newsb);
     330                 :            : }
     331                 :            : EXPORT_SYMBOL(security_sb_clone_mnt_opts);
     332                 :            : 
     333                 :          0 : int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts)
     334                 :            : {
     335                 :          0 :         return security_ops->sb_parse_opts_str(options, opts);
     336                 :            : }
     337                 :            : EXPORT_SYMBOL(security_sb_parse_opts_str);
     338                 :            : 
     339                 :          0 : int security_inode_alloc(struct inode *inode)
     340                 :            : {
     341                 :    1976639 :         inode->i_security = NULL;
     342                 :    1976639 :         return security_ops->inode_alloc_security(inode);
     343                 :            : }
     344                 :            : 
     345                 :          0 : void security_inode_free(struct inode *inode)
     346                 :            : {
     347                 :            :         integrity_inode_free(inode);
     348                 :    1983222 :         security_ops->inode_free_security(inode);
     349                 :    1983221 : }
     350                 :            : 
     351                 :          0 : int security_dentry_init_security(struct dentry *dentry, int mode,
     352                 :            :                                         struct qstr *name, void **ctx,
     353                 :            :                                         u32 *ctxlen)
     354                 :            : {
     355                 :          0 :         return security_ops->dentry_init_security(dentry, mode, name,
     356                 :            :                                                         ctx, ctxlen);
     357                 :            : }
     358                 :            : EXPORT_SYMBOL(security_dentry_init_security);
     359                 :            : 
     360                 :          0 : int security_inode_init_security(struct inode *inode, struct inode *dir,
     361                 :            :                                  const struct qstr *qstr,
     362                 :            :                                  const initxattrs initxattrs, void *fs_data)
     363                 :            : {
     364                 :            :         struct xattr new_xattrs[MAX_LSM_EVM_XATTR + 1];
     365                 :            :         struct xattr *lsm_xattr, *evm_xattr, *xattr;
     366                 :            :         int ret;
     367                 :            : 
     368         [ +  - ]:        491 :         if (unlikely(IS_PRIVATE(inode)))
     369                 :            :                 return 0;
     370                 :            : 
     371         [ -  + ]:        491 :         if (!initxattrs)
     372                 :          0 :                 return security_ops->inode_init_security(inode, dir, qstr,
     373                 :            :                                                          NULL, NULL, NULL);
     374                 :        491 :         memset(new_xattrs, 0, sizeof(new_xattrs));
     375                 :            :         lsm_xattr = new_xattrs;
     376                 :        491 :         ret = security_ops->inode_init_security(inode, dir, qstr,
     377                 :            :                                                 &lsm_xattr->name,
     378                 :            :                                                 &lsm_xattr->value,
     379                 :            :                                                 &lsm_xattr->value_len);
     380         [ -  + ]:        491 :         if (ret)
     381                 :            :                 goto out;
     382                 :            : 
     383                 :            :         evm_xattr = lsm_xattr + 1;
     384                 :            :         ret = evm_inode_init_security(inode, lsm_xattr, evm_xattr);
     385                 :            :         if (ret)
     386                 :            :                 goto out;
     387                 :          0 :         ret = initxattrs(inode, new_xattrs, fs_data);
     388                 :            : out:
     389         [ -  + ]:        982 :         for (xattr = new_xattrs; xattr->value != NULL; xattr++)
     390                 :          0 :                 kfree(xattr->value);
     391         [ -  + ]:        491 :         return (ret == -EOPNOTSUPP) ? 0 : ret;
     392                 :            : }
     393                 :            : EXPORT_SYMBOL(security_inode_init_security);
     394                 :            : 
     395                 :          0 : int security_old_inode_init_security(struct inode *inode, struct inode *dir,
     396                 :            :                                      const struct qstr *qstr, const char **name,
     397                 :            :                                      void **value, size_t *len)
     398                 :            : {
     399         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(inode)))
     400                 :            :                 return -EOPNOTSUPP;
     401                 :          0 :         return security_ops->inode_init_security(inode, dir, qstr, name, value,
     402                 :            :                                                  len);
     403                 :            : }
     404                 :            : EXPORT_SYMBOL(security_old_inode_init_security);
     405                 :            : 
     406                 :            : #ifdef CONFIG_SECURITY_PATH
     407                 :          0 : int security_path_mknod(struct path *dir, struct dentry *dentry, umode_t mode,
     408                 :            :                         unsigned int dev)
     409                 :            : {
     410         [ +  + ]:     415121 :         if (unlikely(IS_PRIVATE(dir->dentry->d_inode)))
     411                 :            :                 return 0;
     412                 :     415120 :         return security_ops->path_mknod(dir, dentry, mode, dev);
     413                 :            : }
     414                 :            : EXPORT_SYMBOL(security_path_mknod);
     415                 :            : 
     416                 :          0 : int security_path_mkdir(struct path *dir, struct dentry *dentry, umode_t mode)
     417                 :            : {
     418         [ +  - ]:      41903 :         if (unlikely(IS_PRIVATE(dir->dentry->d_inode)))
     419                 :            :                 return 0;
     420                 :      41903 :         return security_ops->path_mkdir(dir, dentry, mode);
     421                 :            : }
     422                 :            : EXPORT_SYMBOL(security_path_mkdir);
     423                 :            : 
     424                 :          0 : int security_path_rmdir(struct path *dir, struct dentry *dentry)
     425                 :            : {
     426         [ +  - ]:      41971 :         if (unlikely(IS_PRIVATE(dir->dentry->d_inode)))
     427                 :            :                 return 0;
     428                 :      41971 :         return security_ops->path_rmdir(dir, dentry);
     429                 :            : }
     430                 :            : 
     431                 :          0 : int security_path_unlink(struct path *dir, struct dentry *dentry)
     432                 :            : {
     433         [ +  - ]:     160717 :         if (unlikely(IS_PRIVATE(dir->dentry->d_inode)))
     434                 :            :                 return 0;
     435                 :     160717 :         return security_ops->path_unlink(dir, dentry);
     436                 :            : }
     437                 :            : EXPORT_SYMBOL(security_path_unlink);
     438                 :            : 
     439                 :          0 : int security_path_symlink(struct path *dir, struct dentry *dentry,
     440                 :            :                           const char *old_name)
     441                 :            : {
     442         [ +  - ]:       9207 :         if (unlikely(IS_PRIVATE(dir->dentry->d_inode)))
     443                 :            :                 return 0;
     444                 :       9207 :         return security_ops->path_symlink(dir, dentry, old_name);
     445                 :            : }
     446                 :            : 
     447                 :          0 : int security_path_link(struct dentry *old_dentry, struct path *new_dir,
     448                 :            :                        struct dentry *new_dentry)
     449                 :            : {
     450         [ +  - ]:       8999 :         if (unlikely(IS_PRIVATE(old_dentry->d_inode)))
     451                 :            :                 return 0;
     452                 :       8999 :         return security_ops->path_link(old_dentry, new_dir, new_dentry);
     453                 :            : }
     454                 :            : 
     455                 :          0 : int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
     456                 :            :                          struct path *new_dir, struct dentry *new_dentry)
     457                 :            : {
     458 [ +  - ][ +  + ]:     266398 :         if (unlikely(IS_PRIVATE(old_dentry->d_inode) ||
         [ +  - ][ +  - ]
     459                 :            :                      (new_dentry->d_inode && IS_PRIVATE(new_dentry->d_inode))))
     460                 :            :                 return 0;
     461                 :     266398 :         return security_ops->path_rename(old_dir, old_dentry, new_dir,
     462                 :            :                                          new_dentry);
     463                 :            : }
     464                 :            : EXPORT_SYMBOL(security_path_rename);
     465                 :            : 
     466                 :          0 : int security_path_truncate(struct path *path)
     467                 :            : {
     468         [ +  + ]:      39495 :         if (unlikely(IS_PRIVATE(path->dentry->d_inode)))
     469                 :            :                 return 0;
     470                 :      39489 :         return security_ops->path_truncate(path);
     471                 :            : }
     472                 :            : 
     473                 :          0 : int security_path_chmod(struct path *path, umode_t mode)
     474                 :            : {
     475         [ +  - ]:      17390 :         if (unlikely(IS_PRIVATE(path->dentry->d_inode)))
     476                 :            :                 return 0;
     477                 :      17390 :         return security_ops->path_chmod(path, mode);
     478                 :            : }
     479                 :            : 
     480                 :          0 : int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
     481                 :            : {
     482         [ +  - ]:       3588 :         if (unlikely(IS_PRIVATE(path->dentry->d_inode)))
     483                 :            :                 return 0;
     484                 :       3588 :         return security_ops->path_chown(path, uid, gid);
     485                 :            : }
     486                 :            : 
     487                 :          0 : int security_path_chroot(struct path *path)
     488                 :            : {
     489                 :          2 :         return security_ops->path_chroot(path);
     490                 :            : }
     491                 :            : #endif
     492                 :            : 
     493                 :          0 : int security_inode_create(struct inode *dir, struct dentry *dentry, umode_t mode)
     494                 :            : {
     495         [ +  - ]:     329701 :         if (unlikely(IS_PRIVATE(dir)))
     496                 :            :                 return 0;
     497                 :     329701 :         return security_ops->inode_create(dir, dentry, mode);
     498                 :            : }
     499                 :            : EXPORT_SYMBOL_GPL(security_inode_create);
     500                 :            : 
     501                 :          0 : int security_inode_link(struct dentry *old_dentry, struct inode *dir,
     502                 :            :                          struct dentry *new_dentry)
     503                 :            : {
     504         [ +  - ]:       8997 :         if (unlikely(IS_PRIVATE(old_dentry->d_inode)))
     505                 :            :                 return 0;
     506                 :       8997 :         return security_ops->inode_link(old_dentry, dir, new_dentry);
     507                 :            : }
     508                 :            : 
     509                 :          0 : int security_inode_unlink(struct inode *dir, struct dentry *dentry)
     510                 :            : {
     511         [ +  - ]:     159922 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     512                 :            :                 return 0;
     513                 :     159922 :         return security_ops->inode_unlink(dir, dentry);
     514                 :            : }
     515                 :            : 
     516                 :          0 : int security_inode_symlink(struct inode *dir, struct dentry *dentry,
     517                 :            :                             const char *old_name)
     518                 :            : {
     519         [ +  - ]:       9207 :         if (unlikely(IS_PRIVATE(dir)))
     520                 :            :                 return 0;
     521                 :       9207 :         return security_ops->inode_symlink(dir, dentry, old_name);
     522                 :            : }
     523                 :            : 
     524                 :          0 : int security_inode_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
     525                 :            : {
     526         [ +  - ]:      41903 :         if (unlikely(IS_PRIVATE(dir)))
     527                 :            :                 return 0;
     528                 :      41903 :         return security_ops->inode_mkdir(dir, dentry, mode);
     529                 :            : }
     530                 :            : EXPORT_SYMBOL_GPL(security_inode_mkdir);
     531                 :            : 
     532                 :          0 : int security_inode_rmdir(struct inode *dir, struct dentry *dentry)
     533                 :            : {
     534         [ +  - ]:      41786 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     535                 :            :                 return 0;
     536                 :      41786 :         return security_ops->inode_rmdir(dir, dentry);
     537                 :            : }
     538                 :            : 
     539                 :          0 : int security_inode_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
     540                 :            : {
     541         [ +  - ]:      85565 :         if (unlikely(IS_PRIVATE(dir)))
     542                 :            :                 return 0;
     543                 :      85565 :         return security_ops->inode_mknod(dir, dentry, mode, dev);
     544                 :            : }
     545                 :            : 
     546                 :          0 : int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry,
     547                 :            :                            struct inode *new_dir, struct dentry *new_dentry)
     548                 :            : {
     549 [ +  - ][ +  + ]:     266394 :         if (unlikely(IS_PRIVATE(old_dentry->d_inode) ||
         [ +  - ][ +  - ]
     550                 :            :             (new_dentry->d_inode && IS_PRIVATE(new_dentry->d_inode))))
     551                 :            :                 return 0;
     552                 :     266394 :         return security_ops->inode_rename(old_dir, old_dentry,
     553                 :            :                                            new_dir, new_dentry);
     554                 :            : }
     555                 :            : 
     556                 :          0 : int security_inode_readlink(struct dentry *dentry)
     557                 :            : {
     558         [ +  - ]:      18419 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     559                 :            :                 return 0;
     560                 :      18419 :         return security_ops->inode_readlink(dentry);
     561                 :            : }
     562                 :            : 
     563                 :          0 : int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
     564                 :            : {
     565            [ + ]:     350960 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     566                 :            :                 return 0;
     567                 :     350965 :         return security_ops->inode_follow_link(dentry, nd);
     568                 :            : }
     569                 :            : 
     570                 :          0 : int security_inode_permission(struct inode *inode, int mask)
     571                 :            : {
     572            [ + ]:   39403508 :         if (unlikely(IS_PRIVATE(inode)))
     573                 :            :                 return 0;
     574                 :   39403805 :         return security_ops->inode_permission(inode, mask);
     575                 :            : }
     576                 :            : 
     577                 :          0 : int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
     578                 :            : {
     579                 :            :         int ret;
     580                 :            : 
     581         [ +  + ]:      62655 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     582                 :            :                 return 0;
     583                 :      62652 :         ret = security_ops->inode_setattr(dentry, attr);
     584         [ -  + ]:      62652 :         if (ret)
     585                 :          0 :                 return ret;
     586                 :            :         return evm_inode_setattr(dentry, attr);
     587                 :            : }
     588                 :            : EXPORT_SYMBOL_GPL(security_inode_setattr);
     589                 :            : 
     590                 :          0 : int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry)
     591                 :            : {
     592         [ +  + ]:    6407801 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     593                 :            :                 return 0;
     594                 :    6407724 :         return security_ops->inode_getattr(mnt, dentry);
     595                 :            : }
     596                 :            : 
     597                 :          0 : int security_inode_setxattr(struct dentry *dentry, const char *name,
     598                 :            :                             const void *value, size_t size, int flags)
     599                 :            : {
     600                 :            :         int ret;
     601                 :            : 
     602         [ +  - ]:       2636 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     603                 :            :                 return 0;
     604                 :       2636 :         ret = security_ops->inode_setxattr(dentry, name, value, size, flags);
     605         [ -  + ]:       2636 :         if (ret)
     606                 :          0 :                 return ret;
     607                 :            :         ret = ima_inode_setxattr(dentry, name, value, size);
     608                 :            :         if (ret)
     609                 :            :                 return ret;
     610                 :            :         return evm_inode_setxattr(dentry, name, value, size);
     611                 :            : }
     612                 :            : 
     613                 :          0 : void security_inode_post_setxattr(struct dentry *dentry, const char *name,
     614                 :            :                                   const void *value, size_t size, int flags)
     615                 :            : {
     616         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     617                 :          0 :                 return;
     618                 :          0 :         security_ops->inode_post_setxattr(dentry, name, value, size, flags);
     619                 :            :         evm_inode_post_setxattr(dentry, name, value, size);
     620                 :            : }
     621                 :            : 
     622                 :          0 : int security_inode_getxattr(struct dentry *dentry, const char *name)
     623                 :            : {
     624         [ +  - ]:        219 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     625                 :            :                 return 0;
     626                 :        219 :         return security_ops->inode_getxattr(dentry, name);
     627                 :            : }
     628                 :            : 
     629                 :          0 : int security_inode_listxattr(struct dentry *dentry)
     630                 :            : {
     631         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     632                 :            :                 return 0;
     633                 :          0 :         return security_ops->inode_listxattr(dentry);
     634                 :            : }
     635                 :            : 
     636                 :          0 : int security_inode_removexattr(struct dentry *dentry, const char *name)
     637                 :            : {
     638                 :            :         int ret;
     639                 :            : 
     640         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(dentry->d_inode)))
     641                 :            :                 return 0;
     642                 :          0 :         ret = security_ops->inode_removexattr(dentry, name);
     643         [ #  # ]:          0 :         if (ret)
     644                 :          0 :                 return ret;
     645                 :            :         ret = ima_inode_removexattr(dentry, name);
     646                 :            :         if (ret)
     647                 :            :                 return ret;
     648                 :            :         return evm_inode_removexattr(dentry, name);
     649                 :            : }
     650                 :            : 
     651                 :          0 : int security_inode_need_killpriv(struct dentry *dentry)
     652                 :            : {
     653                 :      47337 :         return security_ops->inode_need_killpriv(dentry);
     654                 :            : }
     655                 :            : 
     656                 :          0 : int security_inode_killpriv(struct dentry *dentry)
     657                 :            : {
     658                 :          0 :         return security_ops->inode_killpriv(dentry);
     659                 :            : }
     660                 :            : 
     661                 :          0 : int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc)
     662                 :            : {
     663         [ +  - ]:         85 :         if (unlikely(IS_PRIVATE(inode)))
     664                 :            :                 return -EOPNOTSUPP;
     665                 :         85 :         return security_ops->inode_getsecurity(inode, name, buffer, alloc);
     666                 :            : }
     667                 :            : 
     668                 :          0 : int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
     669                 :            : {
     670         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(inode)))
     671                 :            :                 return -EOPNOTSUPP;
     672                 :          0 :         return security_ops->inode_setsecurity(inode, name, value, size, flags);
     673                 :            : }
     674                 :            : 
     675                 :          0 : int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size)
     676                 :            : {
     677         [ #  # ]:          0 :         if (unlikely(IS_PRIVATE(inode)))
     678                 :            :                 return 0;
     679                 :          0 :         return security_ops->inode_listsecurity(inode, buffer, buffer_size);
     680                 :            : }
     681                 :            : EXPORT_SYMBOL(security_inode_listsecurity);
     682                 :            : 
     683                 :          0 : void security_inode_getsecid(const struct inode *inode, u32 *secid)
     684                 :            : {
     685                 :        219 :         security_ops->inode_getsecid(inode, secid);
     686                 :        219 : }
     687                 :            : 
     688                 :          0 : int security_file_permission(struct file *file, int mask)
     689                 :            : {
     690                 :            :         int ret;
     691                 :            : 
     692                 :   22564976 :         ret = security_ops->file_permission(file, mask);
     693         [ +  + ]:   22568418 :         if (ret)
     694                 :            :                 return ret;
     695                 :            : 
     696                 :   22568299 :         return fsnotify_perm(file, mask);
     697                 :            : }
     698                 :            : 
     699                 :          0 : int security_file_alloc(struct file *file)
     700                 :            : {
     701                 :    7741125 :         return security_ops->file_alloc_security(file);
     702                 :            : }
     703                 :            : 
     704                 :          0 : void security_file_free(struct file *file)
     705                 :            : {
     706                 :    7740991 :         security_ops->file_free_security(file);
     707                 :    7741132 : }
     708                 :            : 
     709                 :          0 : int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
     710                 :            : {
     711                 :     106582 :         return security_ops->file_ioctl(file, cmd, arg);
     712                 :            : }
     713                 :            : 
     714                 :            : static inline unsigned long mmap_prot(struct file *file, unsigned long prot)
     715                 :            : {
     716                 :            :         /*
     717                 :            :          * Does we have PROT_READ and does the application expect
     718                 :            :          * it to imply PROT_EXEC?  If not, nothing to talk about...
     719                 :            :          */
     720         [ +  + ]:    2883095 :         if ((prot & (PROT_READ | PROT_EXEC)) != PROT_READ)
     721                 :            :                 return prot;
     722         [ -  + ]:    2524348 :         if (!(current->personality & READ_IMPLIES_EXEC))
     723                 :            :                 return prot;
     724                 :            :         /*
     725                 :            :          * if that's an anonymous mapping, let it.
     726                 :            :          */
     727         [ #  # ]:          0 :         if (!file)
     728                 :          0 :                 return prot | PROT_EXEC;
     729                 :            :         /*
     730                 :            :          * ditto if it's not on noexec mount, except that on !MMU we need
     731                 :            :          * BDI_CAP_EXEC_MMAP (== VM_MAYEXEC) in this case
     732                 :            :          */
     733         [ #  # ]:          0 :         if (!(file->f_path.mnt->mnt_flags & MNT_NOEXEC)) {
     734                 :            : #ifndef CONFIG_MMU
     735                 :            :                 unsigned long caps = 0;
     736                 :            :                 struct address_space *mapping = file->f_mapping;
     737                 :            :                 if (mapping && mapping->backing_dev_info)
     738                 :            :                         caps = mapping->backing_dev_info->capabilities;
     739                 :            :                 if (!(caps & BDI_CAP_EXEC_MAP))
     740                 :            :                         return prot;
     741                 :            : #endif
     742                 :          0 :                 return prot | PROT_EXEC;
     743                 :            :         }
     744                 :            :         /* anything on noexec mount won't get PROT_EXEC */
     745                 :            :         return prot;
     746                 :            : }
     747                 :            : 
     748                 :          0 : int security_mmap_file(struct file *file, unsigned long prot,
     749                 :            :                         unsigned long flags)
     750                 :            : {
     751                 :            :         int ret;
     752                 :    2883095 :         ret = security_ops->mmap_file(file, prot,
     753                 :            :                                         mmap_prot(file, prot), flags);
     754         [ -  + ]:    2883093 :         if (ret)
     755                 :          0 :                 return ret;
     756                 :            :         return ima_file_mmap(file, prot);
     757                 :            : }
     758                 :            : 
     759                 :          0 : int security_mmap_addr(unsigned long addr)
     760                 :            : {
     761                 :    5132548 :         return security_ops->mmap_addr(addr);
     762                 :            : }
     763                 :            : 
     764                 :          0 : int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
     765                 :            :                             unsigned long prot)
     766                 :            : {
     767                 :     601078 :         return security_ops->file_mprotect(vma, reqprot, prot);
     768                 :            : }
     769                 :            : 
     770                 :          0 : int security_file_lock(struct file *file, unsigned int cmd)
     771                 :            : {
     772                 :    2057456 :         return security_ops->file_lock(file, cmd);
     773                 :            : }
     774                 :            : 
     775                 :          0 : int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg)
     776                 :            : {
     777                 :    2382103 :         return security_ops->file_fcntl(file, cmd, arg);
     778                 :            : }
     779                 :            : 
     780                 :          0 : int security_file_set_fowner(struct file *file)
     781                 :            : {
     782                 :          8 :         return security_ops->file_set_fowner(file);
     783                 :            : }
     784                 :            : 
     785                 :          0 : int security_file_send_sigiotask(struct task_struct *tsk,
     786                 :            :                                   struct fown_struct *fown, int sig)
     787                 :            : {
     788                 :          0 :         return security_ops->file_send_sigiotask(tsk, fown, sig);
     789                 :            : }
     790                 :            : 
     791                 :          0 : int security_file_receive(struct file *file)
     792                 :            : {
     793                 :          2 :         return security_ops->file_receive(file);
     794                 :            : }
     795                 :            : 
     796                 :          0 : int security_file_open(struct file *file, const struct cred *cred)
     797                 :            : {
     798                 :            :         int ret;
     799                 :            : 
     800                 :    3510441 :         ret = security_ops->file_open(file, cred);
     801            [ + ]:    3510353 :         if (ret)
     802                 :            :                 return ret;
     803                 :            : 
     804                 :    3510320 :         return fsnotify_perm(file, MAY_OPEN);
     805                 :            : }
     806                 :            : 
     807                 :          0 : int security_task_create(unsigned long clone_flags)
     808                 :            : {
     809                 :    1151928 :         return security_ops->task_create(clone_flags);
     810                 :            : }
     811                 :            : 
     812                 :          0 : void security_task_free(struct task_struct *task)
     813                 :            : {
     814                 :            : #ifdef CONFIG_SECURITY_YAMA_STACKED
     815                 :            :         yama_task_free(task);
     816                 :            : #endif
     817                 :    1151566 :         security_ops->task_free(task);
     818                 :    1151486 : }
     819                 :            : 
     820                 :          0 : int security_cred_alloc_blank(struct cred *cred, gfp_t gfp)
     821                 :            : {
     822                 :          0 :         return security_ops->cred_alloc_blank(cred, gfp);
     823                 :            : }
     824                 :            : 
     825                 :          0 : void security_cred_free(struct cred *cred)
     826                 :            : {
     827                 :    1746698 :         security_ops->cred_free(cred);
     828                 :    1748113 : }
     829                 :            : 
     830                 :          0 : int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp)
     831                 :            : {
     832                 :    1748435 :         return security_ops->cred_prepare(new, old, gfp);
     833                 :            : }
     834                 :            : 
     835                 :          0 : void security_transfer_creds(struct cred *new, const struct cred *old)
     836                 :            : {
     837                 :          0 :         security_ops->cred_transfer(new, old);
     838                 :          0 : }
     839                 :            : 
     840                 :          0 : int security_kernel_act_as(struct cred *new, u32 secid)
     841                 :            : {
     842                 :          0 :         return security_ops->kernel_act_as(new, secid);
     843                 :            : }
     844                 :            : 
     845                 :          0 : int security_kernel_create_files_as(struct cred *new, struct inode *inode)
     846                 :            : {
     847                 :          0 :         return security_ops->kernel_create_files_as(new, inode);
     848                 :            : }
     849                 :            : 
     850                 :          0 : int security_kernel_module_request(char *kmod_name)
     851                 :            : {
     852                 :         24 :         return security_ops->kernel_module_request(kmod_name);
     853                 :            : }
     854                 :            : 
     855                 :          0 : int security_kernel_module_from_file(struct file *file)
     856                 :            : {
     857                 :            :         int ret;
     858                 :            : 
     859                 :          0 :         ret = security_ops->kernel_module_from_file(file);
     860         [ #  # ]:          0 :         if (ret)
     861                 :          0 :                 return ret;
     862                 :            :         return ima_module_check(file);
     863                 :            : }
     864                 :            : 
     865                 :          0 : int security_task_fix_setuid(struct cred *new, const struct cred *old,
     866                 :            :                              int flags)
     867                 :            : {
     868                 :       8349 :         return security_ops->task_fix_setuid(new, old, flags);
     869                 :            : }
     870                 :            : 
     871                 :          0 : int security_task_setpgid(struct task_struct *p, pid_t pgid)
     872                 :            : {
     873                 :       1476 :         return security_ops->task_setpgid(p, pgid);
     874                 :            : }
     875                 :            : 
     876                 :          0 : int security_task_getpgid(struct task_struct *p)
     877                 :            : {
     878                 :         36 :         return security_ops->task_getpgid(p);
     879                 :            : }
     880                 :            : 
     881                 :          0 : int security_task_getsid(struct task_struct *p)
     882                 :            : {
     883                 :          0 :         return security_ops->task_getsid(p);
     884                 :            : }
     885                 :            : 
     886                 :          0 : void security_task_getsecid(struct task_struct *p, u32 *secid)
     887                 :            : {
     888                 :        219 :         security_ops->task_getsecid(p, secid);
     889                 :        219 : }
     890                 :            : EXPORT_SYMBOL(security_task_getsecid);
     891                 :            : 
     892                 :          0 : int security_task_setnice(struct task_struct *p, int nice)
     893                 :            : {
     894                 :       1540 :         return security_ops->task_setnice(p, nice);
     895                 :            : }
     896                 :            : 
     897                 :          0 : int security_task_setioprio(struct task_struct *p, int ioprio)
     898                 :            : {
     899                 :          4 :         return security_ops->task_setioprio(p, ioprio);
     900                 :            : }
     901                 :            : 
     902                 :          0 : int security_task_getioprio(struct task_struct *p)
     903                 :            : {
     904                 :          0 :         return security_ops->task_getioprio(p);
     905                 :            : }
     906                 :            : 
     907                 :          0 : int security_task_setrlimit(struct task_struct *p, unsigned int resource,
     908                 :            :                 struct rlimit *new_rlim)
     909                 :            : {
     910                 :       4541 :         return security_ops->task_setrlimit(p, resource, new_rlim);
     911                 :            : }
     912                 :            : 
     913                 :          0 : int security_task_setscheduler(struct task_struct *p)
     914                 :            : {
     915                 :        190 :         return security_ops->task_setscheduler(p);
     916                 :            : }
     917                 :            : 
     918                 :          0 : int security_task_getscheduler(struct task_struct *p)
     919                 :            : {
     920                 :       1035 :         return security_ops->task_getscheduler(p);
     921                 :            : }
     922                 :            : 
     923                 :          0 : int security_task_movememory(struct task_struct *p)
     924                 :            : {
     925                 :          0 :         return security_ops->task_movememory(p);
     926                 :            : }
     927                 :            : 
     928                 :          0 : int security_task_kill(struct task_struct *p, struct siginfo *info,
     929                 :            :                         int sig, u32 secid)
     930                 :            : {
     931                 :    9945286 :         return security_ops->task_kill(p, info, sig, secid);
     932                 :            : }
     933                 :            : 
     934                 :          0 : int security_task_wait(struct task_struct *p)
     935                 :            : {
     936                 :    3243352 :         return security_ops->task_wait(p);
     937                 :            : }
     938                 :            : 
     939                 :          0 : int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
     940                 :            :                          unsigned long arg4, unsigned long arg5)
     941                 :            : {
     942                 :            : #ifdef CONFIG_SECURITY_YAMA_STACKED
     943                 :            :         int rc;
     944                 :            :         rc = yama_task_prctl(option, arg2, arg3, arg4, arg5);
     945                 :            :         if (rc != -ENOSYS)
     946                 :            :                 return rc;
     947                 :            : #endif
     948                 :      18509 :         return security_ops->task_prctl(option, arg2, arg3, arg4, arg5);
     949                 :            : }
     950                 :            : 
     951                 :          0 : void security_task_to_inode(struct task_struct *p, struct inode *inode)
     952                 :            : {
     953                 :      98878 :         security_ops->task_to_inode(p, inode);
     954                 :      98878 : }
     955                 :            : 
     956                 :          0 : int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag)
     957                 :            : {
     958                 :   50171592 :         return security_ops->ipc_permission(ipcp, flag);
     959                 :            : }
     960                 :            : 
     961                 :          0 : void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid)
     962                 :            : {
     963                 :          0 :         security_ops->ipc_getsecid(ipcp, secid);
     964                 :          0 : }
     965                 :            : 
     966                 :          0 : int security_msg_msg_alloc(struct msg_msg *msg)
     967                 :            : {
     968                 :   23554475 :         return security_ops->msg_msg_alloc_security(msg);
     969                 :            : }
     970                 :            : 
     971                 :          0 : void security_msg_msg_free(struct msg_msg *msg)
     972                 :            : {
     973                 :   23575202 :         security_ops->msg_msg_free_security(msg);
     974                 :   23580821 : }
     975                 :            : 
     976                 :          0 : int security_msg_queue_alloc(struct msg_queue *msq)
     977                 :            : {
     978                 :       4442 :         return security_ops->msg_queue_alloc_security(msq);
     979                 :            : }
     980                 :            : 
     981                 :          0 : void security_msg_queue_free(struct msg_queue *msq)
     982                 :            : {
     983                 :       4440 :         security_ops->msg_queue_free_security(msq);
     984                 :       4433 : }
     985                 :            : 
     986                 :          0 : int security_msg_queue_associate(struct msg_queue *msq, int msqflg)
     987                 :            : {
     988                 :      17815 :         return security_ops->msg_queue_associate(msq, msqflg);
     989                 :            : }
     990                 :            : 
     991                 :          0 : int security_msg_queue_msgctl(struct msg_queue *msq, int cmd)
     992                 :            : {
     993                 :       4457 :         return security_ops->msg_queue_msgctl(msq, cmd);
     994                 :            : }
     995                 :            : 
     996                 :          0 : int security_msg_queue_msgsnd(struct msg_queue *msq,
     997                 :            :                                struct msg_msg *msg, int msqflg)
     998                 :            : {
     999                 :   26372211 :         return security_ops->msg_queue_msgsnd(msq, msg, msqflg);
    1000                 :            : }
    1001                 :            : 
    1002                 :          0 : int security_msg_queue_msgrcv(struct msg_queue *msq, struct msg_msg *msg,
    1003                 :            :                                struct task_struct *target, long type, int mode)
    1004                 :            : {
    1005                 :   23554076 :         return security_ops->msg_queue_msgrcv(msq, msg, target, type, mode);
    1006                 :            : }
    1007                 :            : 
    1008                 :          0 : int security_shm_alloc(struct shmid_kernel *shp)
    1009                 :            : {
    1010                 :       4170 :         return security_ops->shm_alloc_security(shp);
    1011                 :            : }
    1012                 :            : 
    1013                 :          0 : void security_shm_free(struct shmid_kernel *shp)
    1014                 :            : {
    1015                 :       4170 :         security_ops->shm_free_security(shp);
    1016                 :       4170 : }
    1017                 :            : 
    1018                 :          0 : int security_shm_associate(struct shmid_kernel *shp, int shmflg)
    1019                 :            : {
    1020                 :         12 :         return security_ops->shm_associate(shp, shmflg);
    1021                 :            : }
    1022                 :            : 
    1023                 :          0 : int security_shm_shmctl(struct shmid_kernel *shp, int cmd)
    1024                 :            : {
    1025                 :       4198 :         return security_ops->shm_shmctl(shp, cmd);
    1026                 :            : }
    1027                 :            : 
    1028                 :          0 : int security_shm_shmat(struct shmid_kernel *shp, char __user *shmaddr, int shmflg)
    1029                 :            : {
    1030                 :       1084 :         return security_ops->shm_shmat(shp, shmaddr, shmflg);
    1031                 :            : }
    1032                 :            : 
    1033                 :          0 : int security_sem_alloc(struct sem_array *sma)
    1034                 :            : {
    1035                 :        168 :         return security_ops->sem_alloc_security(sma);
    1036                 :            : }
    1037                 :            : 
    1038                 :          0 : void security_sem_free(struct sem_array *sma)
    1039                 :            : {
    1040                 :        168 :         security_ops->sem_free_security(sma);
    1041                 :        168 : }
    1042                 :            : 
    1043                 :          0 : int security_sem_associate(struct sem_array *sma, int semflg)
    1044                 :            : {
    1045                 :          0 :         return security_ops->sem_associate(sma, semflg);
    1046                 :            : }
    1047                 :            : 
    1048                 :          0 : int security_sem_semctl(struct sem_array *sma, int cmd)
    1049                 :            : {
    1050                 :     558698 :         return security_ops->sem_semctl(sma, cmd);
    1051                 :            : }
    1052                 :            : 
    1053                 :          0 : int security_sem_semop(struct sem_array *sma, struct sembuf *sops,
    1054                 :            :                         unsigned nsops, int alter)
    1055                 :            : {
    1056                 :      15791 :         return security_ops->sem_semop(sma, sops, nsops, alter);
    1057                 :            : }
    1058                 :            : 
    1059                 :          0 : void security_d_instantiate(struct dentry *dentry, struct inode *inode)
    1060                 :            : {
    1061 [ +  + ][ +  + ]:    3870236 :         if (unlikely(inode && IS_PRIVATE(inode)))
    1062                 :    3870224 :                 return;
    1063                 :    3870176 :         security_ops->d_instantiate(dentry, inode);
    1064                 :            : }
    1065                 :            : EXPORT_SYMBOL(security_d_instantiate);
    1066                 :            : 
    1067                 :          0 : int security_getprocattr(struct task_struct *p, char *name, char **value)
    1068                 :            : {
    1069                 :         14 :         return security_ops->getprocattr(p, name, value);
    1070                 :            : }
    1071                 :            : 
    1072                 :          0 : int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size)
    1073                 :            : {
    1074                 :          0 :         return security_ops->setprocattr(p, name, value, size);
    1075                 :            : }
    1076                 :            : 
    1077                 :          0 : int security_netlink_send(struct sock *sk, struct sk_buff *skb)
    1078                 :            : {
    1079                 :       3819 :         return security_ops->netlink_send(sk, skb);
    1080                 :            : }
    1081                 :            : 
    1082                 :          0 : int security_ismaclabel(const char *name)
    1083                 :            : {
    1084                 :          0 :         return security_ops->ismaclabel(name);
    1085                 :            : }
    1086                 :            : EXPORT_SYMBOL(security_ismaclabel);
    1087                 :            : 
    1088                 :          0 : int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
    1089                 :            : {
    1090                 :          0 :         return security_ops->secid_to_secctx(secid, secdata, seclen);
    1091                 :            : }
    1092                 :            : EXPORT_SYMBOL(security_secid_to_secctx);
    1093                 :            : 
    1094                 :          0 : int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid)
    1095                 :            : {
    1096                 :          0 :         return security_ops->secctx_to_secid(secdata, seclen, secid);
    1097                 :            : }
    1098                 :            : EXPORT_SYMBOL(security_secctx_to_secid);
    1099                 :            : 
    1100                 :          0 : void security_release_secctx(char *secdata, u32 seclen)
    1101                 :            : {
    1102                 :          0 :         security_ops->release_secctx(secdata, seclen);
    1103                 :          0 : }
    1104                 :            : EXPORT_SYMBOL(security_release_secctx);
    1105                 :            : 
    1106                 :          0 : int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen)
    1107                 :            : {
    1108                 :          0 :         return security_ops->inode_notifysecctx(inode, ctx, ctxlen);
    1109                 :            : }
    1110                 :            : EXPORT_SYMBOL(security_inode_notifysecctx);
    1111                 :            : 
    1112                 :          0 : int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen)
    1113                 :            : {
    1114                 :          0 :         return security_ops->inode_setsecctx(dentry, ctx, ctxlen);
    1115                 :            : }
    1116                 :            : EXPORT_SYMBOL(security_inode_setsecctx);
    1117                 :            : 
    1118                 :          0 : int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
    1119                 :            : {
    1120                 :          0 :         return security_ops->inode_getsecctx(inode, ctx, ctxlen);
    1121                 :            : }
    1122                 :            : EXPORT_SYMBOL(security_inode_getsecctx);
    1123                 :            : 
    1124                 :            : #ifdef CONFIG_SECURITY_NETWORK
    1125                 :            : 
    1126                 :          0 : int security_unix_stream_connect(struct sock *sock, struct sock *other, struct sock *newsk)
    1127                 :            : {
    1128                 :        102 :         return security_ops->unix_stream_connect(sock, other, newsk);
    1129                 :            : }
    1130                 :            : EXPORT_SYMBOL(security_unix_stream_connect);
    1131                 :            : 
    1132                 :          0 : int security_unix_may_send(struct socket *sock,  struct socket *other)
    1133                 :            : {
    1134                 :      11259 :         return security_ops->unix_may_send(sock, other);
    1135                 :            : }
    1136                 :            : EXPORT_SYMBOL(security_unix_may_send);
    1137                 :            : 
    1138                 :          0 : int security_socket_create(int family, int type, int protocol, int kern)
    1139                 :            : {
    1140                 :     568998 :         return security_ops->socket_create(family, type, protocol, kern);
    1141                 :            : }
    1142                 :            : 
    1143                 :          0 : int security_socket_post_create(struct socket *sock, int family,
    1144                 :            :                                 int type, int protocol, int kern)
    1145                 :            : {
    1146                 :     568989 :         return security_ops->socket_post_create(sock, family, type,
    1147                 :            :                                                 protocol, kern);
    1148                 :            : }
    1149                 :            : 
    1150                 :          0 : int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen)
    1151                 :            : {
    1152                 :      86050 :         return security_ops->socket_bind(sock, address, addrlen);
    1153                 :            : }
    1154                 :            : 
    1155                 :          0 : int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen)
    1156                 :            : {
    1157                 :       6083 :         return security_ops->socket_connect(sock, address, addrlen);
    1158                 :            : }
    1159                 :            : 
    1160                 :          0 : int security_socket_listen(struct socket *sock, int backlog)
    1161                 :            : {
    1162                 :         11 :         return security_ops->socket_listen(sock, backlog);
    1163                 :            : }
    1164                 :            : 
    1165                 :          0 : int security_socket_accept(struct socket *sock, struct socket *newsock)
    1166                 :            : {
    1167                 :        136 :         return security_ops->socket_accept(sock, newsock);
    1168                 :            : }
    1169                 :            : 
    1170                 :          0 : int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size)
    1171                 :            : {
    1172                 :    1354123 :         return security_ops->socket_sendmsg(sock, msg, size);
    1173                 :            : }
    1174                 :            : 
    1175                 :          0 : int security_socket_recvmsg(struct socket *sock, struct msghdr *msg,
    1176                 :            :                             int size, int flags)
    1177                 :            : {
    1178                 :     841975 :         return security_ops->socket_recvmsg(sock, msg, size, flags);
    1179                 :            : }
    1180                 :            : 
    1181                 :          0 : int security_socket_getsockname(struct socket *sock)
    1182                 :            : {
    1183                 :        774 :         return security_ops->socket_getsockname(sock);
    1184                 :            : }
    1185                 :            : 
    1186                 :          0 : int security_socket_getpeername(struct socket *sock)
    1187                 :            : {
    1188                 :         10 :         return security_ops->socket_getpeername(sock);
    1189                 :            : }
    1190                 :            : 
    1191                 :          0 : int security_socket_getsockopt(struct socket *sock, int level, int optname)
    1192                 :            : {
    1193                 :        110 :         return security_ops->socket_getsockopt(sock, level, optname);
    1194                 :            : }
    1195                 :            : 
    1196                 :          0 : int security_socket_setsockopt(struct socket *sock, int level, int optname)
    1197                 :            : {
    1198                 :         74 :         return security_ops->socket_setsockopt(sock, level, optname);
    1199                 :            : }
    1200                 :            : 
    1201                 :          0 : int security_socket_shutdown(struct socket *sock, int how)
    1202                 :            : {
    1203                 :         47 :         return security_ops->socket_shutdown(sock, how);
    1204                 :            : }
    1205                 :            : 
    1206                 :          0 : int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
    1207                 :            : {
    1208                 :      98393 :         return security_ops->socket_sock_rcv_skb(sk, skb);
    1209                 :            : }
    1210                 :            : EXPORT_SYMBOL(security_sock_rcv_skb);
    1211                 :            : 
    1212                 :          0 : int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
    1213                 :            :                                       int __user *optlen, unsigned len)
    1214                 :            : {
    1215                 :          0 :         return security_ops->socket_getpeersec_stream(sock, optval, optlen, len);
    1216                 :            : }
    1217                 :            : 
    1218                 :          0 : int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)
    1219                 :            : {
    1220                 :    1283563 :         return security_ops->socket_getpeersec_dgram(sock, skb, secid);
    1221                 :            : }
    1222                 :            : EXPORT_SYMBOL(security_socket_getpeersec_dgram);
    1223                 :            : 
    1224                 :          0 : int security_sk_alloc(struct sock *sk, int family, gfp_t priority)
    1225                 :            : {
    1226                 :     573803 :         return security_ops->sk_alloc_security(sk, family, priority);
    1227                 :            : }
    1228                 :            : 
    1229                 :          0 : void security_sk_free(struct sock *sk)
    1230                 :            : {
    1231                 :     573769 :         security_ops->sk_free_security(sk);
    1232                 :     573668 : }
    1233                 :            : 
    1234                 :          0 : void security_sk_clone(const struct sock *sk, struct sock *newsk)
    1235                 :            : {
    1236                 :         27 :         security_ops->sk_clone_security(sk, newsk);
    1237                 :         27 : }
    1238                 :            : EXPORT_SYMBOL(security_sk_clone);
    1239                 :            : 
    1240                 :          0 : void security_sk_classify_flow(struct sock *sk, struct flowi *fl)
    1241                 :            : {
    1242                 :         96 :         security_ops->sk_getsecid(sk, &fl->flowi_secid);
    1243                 :         96 : }
    1244                 :            : EXPORT_SYMBOL(security_sk_classify_flow);
    1245                 :            : 
    1246                 :          0 : void security_req_classify_flow(const struct request_sock *req, struct flowi *fl)
    1247                 :            : {
    1248                 :         54 :         security_ops->req_classify_flow(req, fl);
    1249                 :         54 : }
    1250                 :            : EXPORT_SYMBOL(security_req_classify_flow);
    1251                 :            : 
    1252                 :          0 : void security_sock_graft(struct sock *sk, struct socket *parent)
    1253                 :            : {
    1254                 :        129 :         security_ops->sock_graft(sk, parent);
    1255                 :        129 : }
    1256                 :            : EXPORT_SYMBOL(security_sock_graft);
    1257                 :            : 
    1258                 :          0 : int security_inet_conn_request(struct sock *sk,
    1259                 :            :                         struct sk_buff *skb, struct request_sock *req)
    1260                 :            : {
    1261                 :         27 :         return security_ops->inet_conn_request(sk, skb, req);
    1262                 :            : }
    1263                 :            : EXPORT_SYMBOL(security_inet_conn_request);
    1264                 :            : 
    1265                 :          0 : void security_inet_csk_clone(struct sock *newsk,
    1266                 :            :                         const struct request_sock *req)
    1267                 :            : {
    1268                 :         27 :         security_ops->inet_csk_clone(newsk, req);
    1269                 :         27 : }
    1270                 :            : 
    1271                 :          0 : void security_inet_conn_established(struct sock *sk,
    1272                 :            :                         struct sk_buff *skb)
    1273                 :            : {
    1274                 :         27 :         security_ops->inet_conn_established(sk, skb);
    1275                 :         27 : }
    1276                 :            : 
    1277                 :          0 : int security_secmark_relabel_packet(u32 secid)
    1278                 :            : {
    1279                 :          0 :         return security_ops->secmark_relabel_packet(secid);
    1280                 :            : }
    1281                 :            : EXPORT_SYMBOL(security_secmark_relabel_packet);
    1282                 :            : 
    1283                 :          0 : void security_secmark_refcount_inc(void)
    1284                 :            : {
    1285                 :          0 :         security_ops->secmark_refcount_inc();
    1286                 :          0 : }
    1287                 :            : EXPORT_SYMBOL(security_secmark_refcount_inc);
    1288                 :            : 
    1289                 :          0 : void security_secmark_refcount_dec(void)
    1290                 :            : {
    1291                 :          0 :         security_ops->secmark_refcount_dec();
    1292                 :          0 : }
    1293                 :            : EXPORT_SYMBOL(security_secmark_refcount_dec);
    1294                 :            : 
    1295                 :          0 : int security_tun_dev_alloc_security(void **security)
    1296                 :            : {
    1297                 :          0 :         return security_ops->tun_dev_alloc_security(security);
    1298                 :            : }
    1299                 :            : EXPORT_SYMBOL(security_tun_dev_alloc_security);
    1300                 :            : 
    1301                 :          0 : void security_tun_dev_free_security(void *security)
    1302                 :            : {
    1303                 :          0 :         security_ops->tun_dev_free_security(security);
    1304                 :          0 : }
    1305                 :            : EXPORT_SYMBOL(security_tun_dev_free_security);
    1306                 :            : 
    1307                 :          0 : int security_tun_dev_create(void)
    1308                 :            : {
    1309                 :          0 :         return security_ops->tun_dev_create();
    1310                 :            : }
    1311                 :            : EXPORT_SYMBOL(security_tun_dev_create);
    1312                 :            : 
    1313                 :          0 : int security_tun_dev_attach_queue(void *security)
    1314                 :            : {
    1315                 :          0 :         return security_ops->tun_dev_attach_queue(security);
    1316                 :            : }
    1317                 :            : EXPORT_SYMBOL(security_tun_dev_attach_queue);
    1318                 :            : 
    1319                 :          0 : int security_tun_dev_attach(struct sock *sk, void *security)
    1320                 :            : {
    1321                 :          0 :         return security_ops->tun_dev_attach(sk, security);
    1322                 :            : }
    1323                 :            : EXPORT_SYMBOL(security_tun_dev_attach);
    1324                 :            : 
    1325                 :          0 : int security_tun_dev_open(void *security)
    1326                 :            : {
    1327                 :          0 :         return security_ops->tun_dev_open(security);
    1328                 :            : }
    1329                 :            : EXPORT_SYMBOL(security_tun_dev_open);
    1330                 :            : 
    1331                 :          0 : void security_skb_owned_by(struct sk_buff *skb, struct sock *sk)
    1332                 :            : {
    1333                 :         27 :         security_ops->skb_owned_by(skb, sk);
    1334                 :         27 : }
    1335                 :            : 
    1336                 :            : #endif  /* CONFIG_SECURITY_NETWORK */
    1337                 :            : 
    1338                 :            : #ifdef CONFIG_SECURITY_NETWORK_XFRM
    1339                 :            : 
    1340                 :            : int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx)
    1341                 :            : {
    1342                 :            :         return security_ops->xfrm_policy_alloc_security(ctxp, sec_ctx);
    1343                 :            : }
    1344                 :            : EXPORT_SYMBOL(security_xfrm_policy_alloc);
    1345                 :            : 
    1346                 :            : int security_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx,
    1347                 :            :                               struct xfrm_sec_ctx **new_ctxp)
    1348                 :            : {
    1349                 :            :         return security_ops->xfrm_policy_clone_security(old_ctx, new_ctxp);
    1350                 :            : }
    1351                 :            : 
    1352                 :            : void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx)
    1353                 :            : {
    1354                 :            :         security_ops->xfrm_policy_free_security(ctx);
    1355                 :            : }
    1356                 :            : EXPORT_SYMBOL(security_xfrm_policy_free);
    1357                 :            : 
    1358                 :            : int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx)
    1359                 :            : {
    1360                 :            :         return security_ops->xfrm_policy_delete_security(ctx);
    1361                 :            : }
    1362                 :            : 
    1363                 :            : int security_xfrm_state_alloc(struct xfrm_state *x,
    1364                 :            :                               struct xfrm_user_sec_ctx *sec_ctx)
    1365                 :            : {
    1366                 :            :         return security_ops->xfrm_state_alloc(x, sec_ctx);
    1367                 :            : }
    1368                 :            : EXPORT_SYMBOL(security_xfrm_state_alloc);
    1369                 :            : 
    1370                 :            : int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
    1371                 :            :                                       struct xfrm_sec_ctx *polsec, u32 secid)
    1372                 :            : {
    1373                 :            :         return security_ops->xfrm_state_alloc_acquire(x, polsec, secid);
    1374                 :            : }
    1375                 :            : 
    1376                 :            : int security_xfrm_state_delete(struct xfrm_state *x)
    1377                 :            : {
    1378                 :            :         return security_ops->xfrm_state_delete_security(x);
    1379                 :            : }
    1380                 :            : EXPORT_SYMBOL(security_xfrm_state_delete);
    1381                 :            : 
    1382                 :            : void security_xfrm_state_free(struct xfrm_state *x)
    1383                 :            : {
    1384                 :            :         security_ops->xfrm_state_free_security(x);
    1385                 :            : }
    1386                 :            : 
    1387                 :            : int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir)
    1388                 :            : {
    1389                 :            :         return security_ops->xfrm_policy_lookup(ctx, fl_secid, dir);
    1390                 :            : }
    1391                 :            : 
    1392                 :            : int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
    1393                 :            :                                        struct xfrm_policy *xp,
    1394                 :            :                                        const struct flowi *fl)
    1395                 :            : {
    1396                 :            :         return security_ops->xfrm_state_pol_flow_match(x, xp, fl);
    1397                 :            : }
    1398                 :            : 
    1399                 :            : int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
    1400                 :            : {
    1401                 :            :         return security_ops->xfrm_decode_session(skb, secid, 1);
    1402                 :            : }
    1403                 :            : 
    1404                 :            : void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl)
    1405                 :            : {
    1406                 :            :         int rc = security_ops->xfrm_decode_session(skb, &fl->flowi_secid, 0);
    1407                 :            : 
    1408                 :            :         BUG_ON(rc);
    1409                 :            : }
    1410                 :            : EXPORT_SYMBOL(security_skb_classify_flow);
    1411                 :            : 
    1412                 :            : #endif  /* CONFIG_SECURITY_NETWORK_XFRM */
    1413                 :            : 
    1414                 :            : #ifdef CONFIG_KEYS
    1415                 :            : 
    1416                 :          0 : int security_key_alloc(struct key *key, const struct cred *cred,
    1417                 :            :                        unsigned long flags)
    1418                 :            : {
    1419                 :          3 :         return security_ops->key_alloc(key, cred, flags);
    1420                 :            : }
    1421                 :            : 
    1422                 :          0 : void security_key_free(struct key *key)
    1423                 :            : {
    1424                 :          3 :         security_ops->key_free(key);
    1425                 :          3 : }
    1426                 :            : 
    1427                 :          0 : int security_key_permission(key_ref_t key_ref,
    1428                 :            :                             const struct cred *cred, key_perm_t perm)
    1429                 :            : {
    1430                 :          4 :         return security_ops->key_permission(key_ref, cred, perm);
    1431                 :            : }
    1432                 :            : 
    1433                 :          0 : int security_key_getsecurity(struct key *key, char **_buffer)
    1434                 :            : {
    1435                 :          0 :         return security_ops->key_getsecurity(key, _buffer);
    1436                 :            : }
    1437                 :            : 
    1438                 :            : #endif  /* CONFIG_KEYS */
    1439                 :            : 
    1440                 :            : #ifdef CONFIG_AUDIT
    1441                 :            : 
    1442                 :          0 : int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule)
    1443                 :            : {
    1444                 :          0 :         return security_ops->audit_rule_init(field, op, rulestr, lsmrule);
    1445                 :            : }
    1446                 :            : 
    1447                 :          0 : int security_audit_rule_known(struct audit_krule *krule)
    1448                 :            : {
    1449                 :          0 :         return security_ops->audit_rule_known(krule);
    1450                 :            : }
    1451                 :            : 
    1452                 :          0 : void security_audit_rule_free(void *lsmrule)
    1453                 :            : {
    1454                 :          0 :         security_ops->audit_rule_free(lsmrule);
    1455                 :          0 : }
    1456                 :            : 
    1457                 :          0 : int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule,
    1458                 :            :                               struct audit_context *actx)
    1459                 :            : {
    1460                 :          0 :         return security_ops->audit_rule_match(secid, field, op, lsmrule, actx);
    1461                 :            : }
    1462                 :            : 
    1463                 :            : #endif /* CONFIG_AUDIT */

Generated by: LCOV version 1.9