LCOV - code coverage report
Current view: top level - include/linux - security.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 13 15.4 %
Date: 2014-02-18 Functions: 0 0 -
Branches: 0 18 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Linux Security plug
       3                 :            :  *
       4                 :            :  * Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com>
       5                 :            :  * Copyright (C) 2001 Greg Kroah-Hartman <greg@kroah.com>
       6                 :            :  * Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com>
       7                 :            :  * Copyright (C) 2001 James Morris <jmorris@intercode.com.au>
       8                 :            :  * Copyright (C) 2001 Silicon Graphics, Inc. (Trust Technology Group)
       9                 :            :  *
      10                 :            :  *      This program is free software; you can redistribute it and/or modify
      11                 :            :  *      it under the terms of the GNU General Public License as published by
      12                 :            :  *      the Free Software Foundation; either version 2 of the License, or
      13                 :            :  *      (at your option) any later version.
      14                 :            :  *
      15                 :            :  *      Due to this file being licensed under the GPL there is controversy over
      16                 :            :  *      whether this permits you to write a module that #includes this file
      17                 :            :  *      without placing your module under the GPL.  Please consult a lawyer for
      18                 :            :  *      advice before doing this.
      19                 :            :  *
      20                 :            :  */
      21                 :            : 
      22                 :            : #ifndef __LINUX_SECURITY_H
      23                 :            : #define __LINUX_SECURITY_H
      24                 :            : 
      25                 :            : #include <linux/key.h>
      26                 :            : #include <linux/capability.h>
      27                 :            : #include <linux/slab.h>
      28                 :            : #include <linux/err.h>
      29                 :            : #include <linux/string.h>
      30                 :            : 
      31                 :            : struct linux_binprm;
      32                 :            : struct cred;
      33                 :            : struct rlimit;
      34                 :            : struct siginfo;
      35                 :            : struct sem_array;
      36                 :            : struct sembuf;
      37                 :            : struct kern_ipc_perm;
      38                 :            : struct audit_context;
      39                 :            : struct super_block;
      40                 :            : struct inode;
      41                 :            : struct dentry;
      42                 :            : struct file;
      43                 :            : struct vfsmount;
      44                 :            : struct path;
      45                 :            : struct qstr;
      46                 :            : struct nameidata;
      47                 :            : struct iattr;
      48                 :            : struct fown_struct;
      49                 :            : struct file_operations;
      50                 :            : struct shmid_kernel;
      51                 :            : struct msg_msg;
      52                 :            : struct msg_queue;
      53                 :            : struct xattr;
      54                 :            : struct xfrm_sec_ctx;
      55                 :            : struct mm_struct;
      56                 :            : 
      57                 :            : /* Maximum number of letters for an LSM name string */
      58                 :            : #define SECURITY_NAME_MAX       10
      59                 :            : 
      60                 :            : /* If capable should audit the security request */
      61                 :            : #define SECURITY_CAP_NOAUDIT 0
      62                 :            : #define SECURITY_CAP_AUDIT 1
      63                 :            : 
      64                 :            : /* LSM Agnostic defines for sb_set_mnt_opts */
      65                 :            : #define SECURITY_LSM_NATIVE_LABELS      1
      66                 :            : 
      67                 :            : struct ctl_table;
      68                 :            : struct audit_krule;
      69                 :            : struct user_namespace;
      70                 :            : struct timezone;
      71                 :            : 
      72                 :            : /*
      73                 :            :  * These functions are in security/capability.c and are used
      74                 :            :  * as the default capabilities functions
      75                 :            :  */
      76                 :            : extern int cap_capable(const struct cred *cred, struct user_namespace *ns,
      77                 :            :                        int cap, int audit);
      78                 :            : extern int cap_settime(const struct timespec *ts, const struct timezone *tz);
      79                 :            : extern int cap_ptrace_access_check(struct task_struct *child, unsigned int mode);
      80                 :            : extern int cap_ptrace_traceme(struct task_struct *parent);
      81                 :            : extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);
      82                 :            : extern int cap_capset(struct cred *new, const struct cred *old,
      83                 :            :                       const kernel_cap_t *effective,
      84                 :            :                       const kernel_cap_t *inheritable,
      85                 :            :                       const kernel_cap_t *permitted);
      86                 :            : extern int cap_bprm_set_creds(struct linux_binprm *bprm);
      87                 :            : extern int cap_bprm_secureexec(struct linux_binprm *bprm);
      88                 :            : extern int cap_inode_setxattr(struct dentry *dentry, const char *name,
      89                 :            :                               const void *value, size_t size, int flags);
      90                 :            : extern int cap_inode_removexattr(struct dentry *dentry, const char *name);
      91                 :            : extern int cap_inode_need_killpriv(struct dentry *dentry);
      92                 :            : extern int cap_inode_killpriv(struct dentry *dentry);
      93                 :            : extern int cap_mmap_addr(unsigned long addr);
      94                 :            : extern int cap_mmap_file(struct file *file, unsigned long reqprot,
      95                 :            :                          unsigned long prot, unsigned long flags);
      96                 :            : extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags);
      97                 :            : extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3,
      98                 :            :                           unsigned long arg4, unsigned long arg5);
      99                 :            : extern int cap_task_setscheduler(struct task_struct *p);
     100                 :            : extern int cap_task_setioprio(struct task_struct *p, int ioprio);
     101                 :            : extern int cap_task_setnice(struct task_struct *p, int nice);
     102                 :            : extern int cap_vm_enough_memory(struct mm_struct *mm, long pages);
     103                 :            : 
     104                 :            : struct msghdr;
     105                 :            : struct sk_buff;
     106                 :            : struct sock;
     107                 :            : struct sockaddr;
     108                 :            : struct socket;
     109                 :            : struct flowi;
     110                 :            : struct dst_entry;
     111                 :            : struct xfrm_selector;
     112                 :            : struct xfrm_policy;
     113                 :            : struct xfrm_state;
     114                 :            : struct xfrm_user_sec_ctx;
     115                 :            : struct seq_file;
     116                 :            : 
     117                 :            : extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
     118                 :            : 
     119                 :            : void reset_security_ops(void);
     120                 :            : 
     121                 :            : #ifdef CONFIG_MMU
     122                 :            : extern unsigned long mmap_min_addr;
     123                 :            : extern unsigned long dac_mmap_min_addr;
     124                 :            : #else
     125                 :            : #define mmap_min_addr           0UL
     126                 :            : #define dac_mmap_min_addr       0UL
     127                 :            : #endif
     128                 :            : 
     129                 :            : /*
     130                 :            :  * Values used in the task_security_ops calls
     131                 :            :  */
     132                 :            : /* setuid or setgid, id0 == uid or gid */
     133                 :            : #define LSM_SETID_ID    1
     134                 :            : 
     135                 :            : /* setreuid or setregid, id0 == real, id1 == eff */
     136                 :            : #define LSM_SETID_RE    2
     137                 :            : 
     138                 :            : /* setresuid or setresgid, id0 == real, id1 == eff, uid2 == saved */
     139                 :            : #define LSM_SETID_RES   4
     140                 :            : 
     141                 :            : /* setfsuid or setfsgid, id0 == fsuid or fsgid */
     142                 :            : #define LSM_SETID_FS    8
     143                 :            : 
     144                 :            : /* forward declares to avoid warnings */
     145                 :            : struct sched_param;
     146                 :            : struct request_sock;
     147                 :            : 
     148                 :            : /* bprm->unsafe reasons */
     149                 :            : #define LSM_UNSAFE_SHARE        1
     150                 :            : #define LSM_UNSAFE_PTRACE       2
     151                 :            : #define LSM_UNSAFE_PTRACE_CAP   4
     152                 :            : #define LSM_UNSAFE_NO_NEW_PRIVS 8
     153                 :            : 
     154                 :            : #ifdef CONFIG_MMU
     155                 :            : extern int mmap_min_addr_handler(struct ctl_table *table, int write,
     156                 :            :                                  void __user *buffer, size_t *lenp, loff_t *ppos);
     157                 :            : #endif
     158                 :            : 
     159                 :            : /* security_inode_init_security callback function to write xattrs */
     160                 :            : typedef int (*initxattrs) (struct inode *inode,
     161                 :            :                            const struct xattr *xattr_array, void *fs_data);
     162                 :            : 
     163                 :            : #ifdef CONFIG_SECURITY
     164                 :            : 
     165                 :            : struct security_mnt_opts {
     166                 :            :         char **mnt_opts;
     167                 :            :         int *mnt_opts_flags;
     168                 :            :         int num_mnt_opts;
     169                 :            : };
     170                 :            : 
     171                 :            : static inline void security_init_mnt_opts(struct security_mnt_opts *opts)
     172                 :            : {
     173                 :          0 :         opts->mnt_opts = NULL;
     174                 :          0 :         opts->mnt_opts_flags = NULL;
     175                 :          0 :         opts->num_mnt_opts = 0;
     176                 :            : }
     177                 :            : 
     178                 :            : static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
     179                 :            : {
     180                 :            :         int i;
     181 [ #  # ][ #  # ]:          0 :         if (opts->mnt_opts)
         [ #  # ][ #  # ]
                 [ #  # ]
     182 [ #  # ][ #  # ]:          0 :                 for (i = 0; i < opts->num_mnt_opts; i++)
         [ #  # ][ #  # ]
     183                 :          0 :                         kfree(opts->mnt_opts[i]);
     184                 :          0 :         kfree(opts->mnt_opts);
     185                 :          0 :         opts->mnt_opts = NULL;
     186                 :          0 :         kfree(opts->mnt_opts_flags);
     187                 :          0 :         opts->mnt_opts_flags = NULL;
     188                 :          0 :         opts->num_mnt_opts = 0;
     189                 :            : }
     190                 :            : 
     191                 :            : /**
     192                 :            :  * struct security_operations - main security structure
     193                 :            :  *
     194                 :            :  * Security module identifier.
     195                 :            :  *
     196                 :            :  * @name:
     197                 :            :  *      A string that acts as a unique identifier for the LSM with max number
     198                 :            :  *      of characters = SECURITY_NAME_MAX.
     199                 :            :  *
     200                 :            :  * Security hooks for program execution operations.
     201                 :            :  *
     202                 :            :  * @bprm_set_creds:
     203                 :            :  *      Save security information in the bprm->security field, typically based
     204                 :            :  *      on information about the bprm->file, for later use by the apply_creds
     205                 :            :  *      hook.  This hook may also optionally check permissions (e.g. for
     206                 :            :  *      transitions between security domains).
     207                 :            :  *      This hook may be called multiple times during a single execve, e.g. for
     208                 :            :  *      interpreters.  The hook can tell whether it has already been called by
     209                 :            :  *      checking to see if @bprm->security is non-NULL.  If so, then the hook
     210                 :            :  *      may decide either to retain the security information saved earlier or
     211                 :            :  *      to replace it.
     212                 :            :  *      @bprm contains the linux_binprm structure.
     213                 :            :  *      Return 0 if the hook is successful and permission is granted.
     214                 :            :  * @bprm_check_security:
     215                 :            :  *      This hook mediates the point when a search for a binary handler will
     216                 :            :  *      begin.  It allows a check the @bprm->security value which is set in the
     217                 :            :  *      preceding set_creds call.  The primary difference from set_creds is
     218                 :            :  *      that the argv list and envp list are reliably available in @bprm.  This
     219                 :            :  *      hook may be called multiple times during a single execve; and in each
     220                 :            :  *      pass set_creds is called first.
     221                 :            :  *      @bprm contains the linux_binprm structure.
     222                 :            :  *      Return 0 if the hook is successful and permission is granted.
     223                 :            :  * @bprm_committing_creds:
     224                 :            :  *      Prepare to install the new security attributes of a process being
     225                 :            :  *      transformed by an execve operation, based on the old credentials
     226                 :            :  *      pointed to by @current->cred and the information set in @bprm->cred by
     227                 :            :  *      the bprm_set_creds hook.  @bprm points to the linux_binprm structure.
     228                 :            :  *      This hook is a good place to perform state changes on the process such
     229                 :            :  *      as closing open file descriptors to which access will no longer be
     230                 :            :  *      granted when the attributes are changed.  This is called immediately
     231                 :            :  *      before commit_creds().
     232                 :            :  * @bprm_committed_creds:
     233                 :            :  *      Tidy up after the installation of the new security attributes of a
     234                 :            :  *      process being transformed by an execve operation.  The new credentials
     235                 :            :  *      have, by this point, been set to @current->cred.  @bprm points to the
     236                 :            :  *      linux_binprm structure.  This hook is a good place to perform state
     237                 :            :  *      changes on the process such as clearing out non-inheritable signal
     238                 :            :  *      state.  This is called immediately after commit_creds().
     239                 :            :  * @bprm_secureexec:
     240                 :            :  *      Return a boolean value (0 or 1) indicating whether a "secure exec"
     241                 :            :  *      is required.  The flag is passed in the auxiliary table
     242                 :            :  *      on the initial stack to the ELF interpreter to indicate whether libc
     243                 :            :  *      should enable secure mode.
     244                 :            :  *      @bprm contains the linux_binprm structure.
     245                 :            :  *
     246                 :            :  * Security hooks for filesystem operations.
     247                 :            :  *
     248                 :            :  * @sb_alloc_security:
     249                 :            :  *      Allocate and attach a security structure to the sb->s_security field.
     250                 :            :  *      The s_security field is initialized to NULL when the structure is
     251                 :            :  *      allocated.
     252                 :            :  *      @sb contains the super_block structure to be modified.
     253                 :            :  *      Return 0 if operation was successful.
     254                 :            :  * @sb_free_security:
     255                 :            :  *      Deallocate and clear the sb->s_security field.
     256                 :            :  *      @sb contains the super_block structure to be modified.
     257                 :            :  * @sb_statfs:
     258                 :            :  *      Check permission before obtaining filesystem statistics for the @mnt
     259                 :            :  *      mountpoint.
     260                 :            :  *      @dentry is a handle on the superblock for the filesystem.
     261                 :            :  *      Return 0 if permission is granted.
     262                 :            :  * @sb_mount:
     263                 :            :  *      Check permission before an object specified by @dev_name is mounted on
     264                 :            :  *      the mount point named by @nd.  For an ordinary mount, @dev_name
     265                 :            :  *      identifies a device if the file system type requires a device.  For a
     266                 :            :  *      remount (@flags & MS_REMOUNT), @dev_name is irrelevant.  For a
     267                 :            :  *      loopback/bind mount (@flags & MS_BIND), @dev_name identifies the
     268                 :            :  *      pathname of the object being mounted.
     269                 :            :  *      @dev_name contains the name for object being mounted.
     270                 :            :  *      @path contains the path for mount point object.
     271                 :            :  *      @type contains the filesystem type.
     272                 :            :  *      @flags contains the mount flags.
     273                 :            :  *      @data contains the filesystem-specific data.
     274                 :            :  *      Return 0 if permission is granted.
     275                 :            :  * @sb_copy_data:
     276                 :            :  *      Allow mount option data to be copied prior to parsing by the filesystem,
     277                 :            :  *      so that the security module can extract security-specific mount
     278                 :            :  *      options cleanly (a filesystem may modify the data e.g. with strsep()).
     279                 :            :  *      This also allows the original mount data to be stripped of security-
     280                 :            :  *      specific options to avoid having to make filesystems aware of them.
     281                 :            :  *      @type the type of filesystem being mounted.
     282                 :            :  *      @orig the original mount data copied from userspace.
     283                 :            :  *      @copy copied data which will be passed to the security module.
     284                 :            :  *      Returns 0 if the copy was successful.
     285                 :            :  * @sb_remount:
     286                 :            :  *      Extracts security system specific mount options and verifies no changes
     287                 :            :  *      are being made to those options.
     288                 :            :  *      @sb superblock being remounted
     289                 :            :  *      @data contains the filesystem-specific data.
     290                 :            :  *      Return 0 if permission is granted.
     291                 :            :  * @sb_umount:
     292                 :            :  *      Check permission before the @mnt file system is unmounted.
     293                 :            :  *      @mnt contains the mounted file system.
     294                 :            :  *      @flags contains the unmount flags, e.g. MNT_FORCE.
     295                 :            :  *      Return 0 if permission is granted.
     296                 :            :  * @sb_pivotroot:
     297                 :            :  *      Check permission before pivoting the root filesystem.
     298                 :            :  *      @old_path contains the path for the new location of the current root (put_old).
     299                 :            :  *      @new_path contains the path for the new root (new_root).
     300                 :            :  *      Return 0 if permission is granted.
     301                 :            :  * @sb_set_mnt_opts:
     302                 :            :  *      Set the security relevant mount options used for a superblock
     303                 :            :  *      @sb the superblock to set security mount options for
     304                 :            :  *      @opts binary data structure containing all lsm mount data
     305                 :            :  * @sb_clone_mnt_opts:
     306                 :            :  *      Copy all security options from a given superblock to another
     307                 :            :  *      @oldsb old superblock which contain information to clone
     308                 :            :  *      @newsb new superblock which needs filled in
     309                 :            :  * @sb_parse_opts_str:
     310                 :            :  *      Parse a string of security data filling in the opts structure
     311                 :            :  *      @options string containing all mount options known by the LSM
     312                 :            :  *      @opts binary data structure usable by the LSM
     313                 :            :  * @dentry_init_security:
     314                 :            :  *      Compute a context for a dentry as the inode is not yet available
     315                 :            :  *      since NFSv4 has no label backed by an EA anyway.
     316                 :            :  *      @dentry dentry to use in calculating the context.
     317                 :            :  *      @mode mode used to determine resource type.
     318                 :            :  *      @name name of the last path component used to create file
     319                 :            :  *      @ctx pointer to place the pointer to the resulting context in.
     320                 :            :  *      @ctxlen point to place the length of the resulting context.
     321                 :            :  *
     322                 :            :  *
     323                 :            :  * Security hooks for inode operations.
     324                 :            :  *
     325                 :            :  * @inode_alloc_security:
     326                 :            :  *      Allocate and attach a security structure to @inode->i_security.  The
     327                 :            :  *      i_security field is initialized to NULL when the inode structure is
     328                 :            :  *      allocated.
     329                 :            :  *      @inode contains the inode structure.
     330                 :            :  *      Return 0 if operation was successful.
     331                 :            :  * @inode_free_security:
     332                 :            :  *      @inode contains the inode structure.
     333                 :            :  *      Deallocate the inode security structure and set @inode->i_security to
     334                 :            :  *      NULL.
     335                 :            :  * @inode_init_security:
     336                 :            :  *      Obtain the security attribute name suffix and value to set on a newly
     337                 :            :  *      created inode and set up the incore security field for the new inode.
     338                 :            :  *      This hook is called by the fs code as part of the inode creation
     339                 :            :  *      transaction and provides for atomic labeling of the inode, unlike
     340                 :            :  *      the post_create/mkdir/... hooks called by the VFS.  The hook function
     341                 :            :  *      is expected to allocate the name and value via kmalloc, with the caller
     342                 :            :  *      being responsible for calling kfree after using them.
     343                 :            :  *      If the security module does not use security attributes or does
     344                 :            :  *      not wish to put a security attribute on this particular inode,
     345                 :            :  *      then it should return -EOPNOTSUPP to skip this processing.
     346                 :            :  *      @inode contains the inode structure of the newly created inode.
     347                 :            :  *      @dir contains the inode structure of the parent directory.
     348                 :            :  *      @qstr contains the last path component of the new object
     349                 :            :  *      @name will be set to the allocated name suffix (e.g. selinux).
     350                 :            :  *      @value will be set to the allocated attribute value.
     351                 :            :  *      @len will be set to the length of the value.
     352                 :            :  *      Returns 0 if @name and @value have been successfully set,
     353                 :            :  *              -EOPNOTSUPP if no security attribute is needed, or
     354                 :            :  *              -ENOMEM on memory allocation failure.
     355                 :            :  * @inode_create:
     356                 :            :  *      Check permission to create a regular file.
     357                 :            :  *      @dir contains inode structure of the parent of the new file.
     358                 :            :  *      @dentry contains the dentry structure for the file to be created.
     359                 :            :  *      @mode contains the file mode of the file to be created.
     360                 :            :  *      Return 0 if permission is granted.
     361                 :            :  * @inode_link:
     362                 :            :  *      Check permission before creating a new hard link to a file.
     363                 :            :  *      @old_dentry contains the dentry structure for an existing link to the file.
     364                 :            :  *      @dir contains the inode structure of the parent directory of the new link.
     365                 :            :  *      @new_dentry contains the dentry structure for the new link.
     366                 :            :  *      Return 0 if permission is granted.
     367                 :            :  * @path_link:
     368                 :            :  *      Check permission before creating a new hard link to a file.
     369                 :            :  *      @old_dentry contains the dentry structure for an existing link
     370                 :            :  *      to the file.
     371                 :            :  *      @new_dir contains the path structure of the parent directory of
     372                 :            :  *      the new link.
     373                 :            :  *      @new_dentry contains the dentry structure for the new link.
     374                 :            :  *      Return 0 if permission is granted.
     375                 :            :  * @inode_unlink:
     376                 :            :  *      Check the permission to remove a hard link to a file.
     377                 :            :  *      @dir contains the inode structure of parent directory of the file.
     378                 :            :  *      @dentry contains the dentry structure for file to be unlinked.
     379                 :            :  *      Return 0 if permission is granted.
     380                 :            :  * @path_unlink:
     381                 :            :  *      Check the permission to remove a hard link to a file.
     382                 :            :  *      @dir contains the path structure of parent directory of the file.
     383                 :            :  *      @dentry contains the dentry structure for file to be unlinked.
     384                 :            :  *      Return 0 if permission is granted.
     385                 :            :  * @inode_symlink:
     386                 :            :  *      Check the permission to create a symbolic link to a file.
     387                 :            :  *      @dir contains the inode structure of parent directory of the symbolic link.
     388                 :            :  *      @dentry contains the dentry structure of the symbolic link.
     389                 :            :  *      @old_name contains the pathname of file.
     390                 :            :  *      Return 0 if permission is granted.
     391                 :            :  * @path_symlink:
     392                 :            :  *      Check the permission to create a symbolic link to a file.
     393                 :            :  *      @dir contains the path structure of parent directory of
     394                 :            :  *      the symbolic link.
     395                 :            :  *      @dentry contains the dentry structure of the symbolic link.
     396                 :            :  *      @old_name contains the pathname of file.
     397                 :            :  *      Return 0 if permission is granted.
     398                 :            :  * @inode_mkdir:
     399                 :            :  *      Check permissions to create a new directory in the existing directory
     400                 :            :  *      associated with inode structure @dir.
     401                 :            :  *      @dir contains the inode structure of parent of the directory to be created.
     402                 :            :  *      @dentry contains the dentry structure of new directory.
     403                 :            :  *      @mode contains the mode of new directory.
     404                 :            :  *      Return 0 if permission is granted.
     405                 :            :  * @path_mkdir:
     406                 :            :  *      Check permissions to create a new directory in the existing directory
     407                 :            :  *      associated with path structure @path.
     408                 :            :  *      @dir contains the path structure of parent of the directory
     409                 :            :  *      to be created.
     410                 :            :  *      @dentry contains the dentry structure of new directory.
     411                 :            :  *      @mode contains the mode of new directory.
     412                 :            :  *      Return 0 if permission is granted.
     413                 :            :  * @inode_rmdir:
     414                 :            :  *      Check the permission to remove a directory.
     415                 :            :  *      @dir contains the inode structure of parent of the directory to be removed.
     416                 :            :  *      @dentry contains the dentry structure of directory to be removed.
     417                 :            :  *      Return 0 if permission is granted.
     418                 :            :  * @path_rmdir:
     419                 :            :  *      Check the permission to remove a directory.
     420                 :            :  *      @dir contains the path structure of parent of the directory to be
     421                 :            :  *      removed.
     422                 :            :  *      @dentry contains the dentry structure of directory to be removed.
     423                 :            :  *      Return 0 if permission is granted.
     424                 :            :  * @inode_mknod:
     425                 :            :  *      Check permissions when creating a special file (or a socket or a fifo
     426                 :            :  *      file created via the mknod system call).  Note that if mknod operation
     427                 :            :  *      is being done for a regular file, then the create hook will be called
     428                 :            :  *      and not this hook.
     429                 :            :  *      @dir contains the inode structure of parent of the new file.
     430                 :            :  *      @dentry contains the dentry structure of the new file.
     431                 :            :  *      @mode contains the mode of the new file.
     432                 :            :  *      @dev contains the device number.
     433                 :            :  *      Return 0 if permission is granted.
     434                 :            :  * @path_mknod:
     435                 :            :  *      Check permissions when creating a file. Note that this hook is called
     436                 :            :  *      even if mknod operation is being done for a regular file.
     437                 :            :  *      @dir contains the path structure of parent of the new file.
     438                 :            :  *      @dentry contains the dentry structure of the new file.
     439                 :            :  *      @mode contains the mode of the new file.
     440                 :            :  *      @dev contains the undecoded device number. Use new_decode_dev() to get
     441                 :            :  *      the decoded device number.
     442                 :            :  *      Return 0 if permission is granted.
     443                 :            :  * @inode_rename:
     444                 :            :  *      Check for permission to rename a file or directory.
     445                 :            :  *      @old_dir contains the inode structure for parent of the old link.
     446                 :            :  *      @old_dentry contains the dentry structure of the old link.
     447                 :            :  *      @new_dir contains the inode structure for parent of the new link.
     448                 :            :  *      @new_dentry contains the dentry structure of the new link.
     449                 :            :  *      Return 0 if permission is granted.
     450                 :            :  * @path_rename:
     451                 :            :  *      Check for permission to rename a file or directory.
     452                 :            :  *      @old_dir contains the path structure for parent of the old link.
     453                 :            :  *      @old_dentry contains the dentry structure of the old link.
     454                 :            :  *      @new_dir contains the path structure for parent of the new link.
     455                 :            :  *      @new_dentry contains the dentry structure of the new link.
     456                 :            :  *      Return 0 if permission is granted.
     457                 :            :  * @path_chmod:
     458                 :            :  *      Check for permission to change DAC's permission of a file or directory.
     459                 :            :  *      @dentry contains the dentry structure.
     460                 :            :  *      @mnt contains the vfsmnt structure.
     461                 :            :  *      @mode contains DAC's mode.
     462                 :            :  *      Return 0 if permission is granted.
     463                 :            :  * @path_chown:
     464                 :            :  *      Check for permission to change owner/group of a file or directory.
     465                 :            :  *      @path contains the path structure.
     466                 :            :  *      @uid contains new owner's ID.
     467                 :            :  *      @gid contains new group's ID.
     468                 :            :  *      Return 0 if permission is granted.
     469                 :            :  * @path_chroot:
     470                 :            :  *      Check for permission to change root directory.
     471                 :            :  *      @path contains the path structure.
     472                 :            :  *      Return 0 if permission is granted.
     473                 :            :  * @inode_readlink:
     474                 :            :  *      Check the permission to read the symbolic link.
     475                 :            :  *      @dentry contains the dentry structure for the file link.
     476                 :            :  *      Return 0 if permission is granted.
     477                 :            :  * @inode_follow_link:
     478                 :            :  *      Check permission to follow a symbolic link when looking up a pathname.
     479                 :            :  *      @dentry contains the dentry structure for the link.
     480                 :            :  *      @nd contains the nameidata structure for the parent directory.
     481                 :            :  *      Return 0 if permission is granted.
     482                 :            :  * @inode_permission:
     483                 :            :  *      Check permission before accessing an inode.  This hook is called by the
     484                 :            :  *      existing Linux permission function, so a security module can use it to
     485                 :            :  *      provide additional checking for existing Linux permission checks.
     486                 :            :  *      Notice that this hook is called when a file is opened (as well as many
     487                 :            :  *      other operations), whereas the file_security_ops permission hook is
     488                 :            :  *      called when the actual read/write operations are performed.
     489                 :            :  *      @inode contains the inode structure to check.
     490                 :            :  *      @mask contains the permission mask.
     491                 :            :  *      Return 0 if permission is granted.
     492                 :            :  * @inode_setattr:
     493                 :            :  *      Check permission before setting file attributes.  Note that the kernel
     494                 :            :  *      call to notify_change is performed from several locations, whenever
     495                 :            :  *      file attributes change (such as when a file is truncated, chown/chmod
     496                 :            :  *      operations, transferring disk quotas, etc).
     497                 :            :  *      @dentry contains the dentry structure for the file.
     498                 :            :  *      @attr is the iattr structure containing the new file attributes.
     499                 :            :  *      Return 0 if permission is granted.
     500                 :            :  * @path_truncate:
     501                 :            :  *      Check permission before truncating a file.
     502                 :            :  *      @path contains the path structure for the file.
     503                 :            :  *      Return 0 if permission is granted.
     504                 :            :  * @inode_getattr:
     505                 :            :  *      Check permission before obtaining file attributes.
     506                 :            :  *      @mnt is the vfsmount where the dentry was looked up
     507                 :            :  *      @dentry contains the dentry structure for the file.
     508                 :            :  *      Return 0 if permission is granted.
     509                 :            :  * @inode_setxattr:
     510                 :            :  *      Check permission before setting the extended attributes
     511                 :            :  *      @value identified by @name for @dentry.
     512                 :            :  *      Return 0 if permission is granted.
     513                 :            :  * @inode_post_setxattr:
     514                 :            :  *      Update inode security field after successful setxattr operation.
     515                 :            :  *      @value identified by @name for @dentry.
     516                 :            :  * @inode_getxattr:
     517                 :            :  *      Check permission before obtaining the extended attributes
     518                 :            :  *      identified by @name for @dentry.
     519                 :            :  *      Return 0 if permission is granted.
     520                 :            :  * @inode_listxattr:
     521                 :            :  *      Check permission before obtaining the list of extended attribute
     522                 :            :  *      names for @dentry.
     523                 :            :  *      Return 0 if permission is granted.
     524                 :            :  * @inode_removexattr:
     525                 :            :  *      Check permission before removing the extended attribute
     526                 :            :  *      identified by @name for @dentry.
     527                 :            :  *      Return 0 if permission is granted.
     528                 :            :  * @inode_getsecurity:
     529                 :            :  *      Retrieve a copy of the extended attribute representation of the
     530                 :            :  *      security label associated with @name for @inode via @buffer.  Note that
     531                 :            :  *      @name is the remainder of the attribute name after the security prefix
     532                 :            :  *      has been removed. @alloc is used to specify of the call should return a
     533                 :            :  *      value via the buffer or just the value length Return size of buffer on
     534                 :            :  *      success.
     535                 :            :  * @inode_setsecurity:
     536                 :            :  *      Set the security label associated with @name for @inode from the
     537                 :            :  *      extended attribute value @value.  @size indicates the size of the
     538                 :            :  *      @value in bytes.  @flags may be XATTR_CREATE, XATTR_REPLACE, or 0.
     539                 :            :  *      Note that @name is the remainder of the attribute name after the
     540                 :            :  *      security. prefix has been removed.
     541                 :            :  *      Return 0 on success.
     542                 :            :  * @inode_listsecurity:
     543                 :            :  *      Copy the extended attribute names for the security labels
     544                 :            :  *      associated with @inode into @buffer.  The maximum size of @buffer
     545                 :            :  *      is specified by @buffer_size.  @buffer may be NULL to request
     546                 :            :  *      the size of the buffer required.
     547                 :            :  *      Returns number of bytes used/required on success.
     548                 :            :  * @inode_need_killpriv:
     549                 :            :  *      Called when an inode has been changed.
     550                 :            :  *      @dentry is the dentry being changed.
     551                 :            :  *      Return <0 on error to abort the inode change operation.
     552                 :            :  *      Return 0 if inode_killpriv does not need to be called.
     553                 :            :  *      Return >0 if inode_killpriv does need to be called.
     554                 :            :  * @inode_killpriv:
     555                 :            :  *      The setuid bit is being removed.  Remove similar security labels.
     556                 :            :  *      Called with the dentry->d_inode->i_mutex held.
     557                 :            :  *      @dentry is the dentry being changed.
     558                 :            :  *      Return 0 on success.  If error is returned, then the operation
     559                 :            :  *      causing setuid bit removal is failed.
     560                 :            :  * @inode_getsecid:
     561                 :            :  *      Get the secid associated with the node.
     562                 :            :  *      @inode contains a pointer to the inode.
     563                 :            :  *      @secid contains a pointer to the location where result will be saved.
     564                 :            :  *      In case of failure, @secid will be set to zero.
     565                 :            :  *
     566                 :            :  * Security hooks for file operations
     567                 :            :  *
     568                 :            :  * @file_permission:
     569                 :            :  *      Check file permissions before accessing an open file.  This hook is
     570                 :            :  *      called by various operations that read or write files.  A security
     571                 :            :  *      module can use this hook to perform additional checking on these
     572                 :            :  *      operations, e.g.  to revalidate permissions on use to support privilege
     573                 :            :  *      bracketing or policy changes.  Notice that this hook is used when the
     574                 :            :  *      actual read/write operations are performed, whereas the
     575                 :            :  *      inode_security_ops hook is called when a file is opened (as well as
     576                 :            :  *      many other operations).
     577                 :            :  *      Caveat:  Although this hook can be used to revalidate permissions for
     578                 :            :  *      various system call operations that read or write files, it does not
     579                 :            :  *      address the revalidation of permissions for memory-mapped files.
     580                 :            :  *      Security modules must handle this separately if they need such
     581                 :            :  *      revalidation.
     582                 :            :  *      @file contains the file structure being accessed.
     583                 :            :  *      @mask contains the requested permissions.
     584                 :            :  *      Return 0 if permission is granted.
     585                 :            :  * @file_alloc_security:
     586                 :            :  *      Allocate and attach a security structure to the file->f_security field.
     587                 :            :  *      The security field is initialized to NULL when the structure is first
     588                 :            :  *      created.
     589                 :            :  *      @file contains the file structure to secure.
     590                 :            :  *      Return 0 if the hook is successful and permission is granted.
     591                 :            :  * @file_free_security:
     592                 :            :  *      Deallocate and free any security structures stored in file->f_security.
     593                 :            :  *      @file contains the file structure being modified.
     594                 :            :  * @file_ioctl:
     595                 :            :  *      @file contains the file structure.
     596                 :            :  *      @cmd contains the operation to perform.
     597                 :            :  *      @arg contains the operational arguments.
     598                 :            :  *      Check permission for an ioctl operation on @file.  Note that @arg
     599                 :            :  *      sometimes represents a user space pointer; in other cases, it may be a
     600                 :            :  *      simple integer value.  When @arg represents a user space pointer, it
     601                 :            :  *      should never be used by the security module.
     602                 :            :  *      Return 0 if permission is granted.
     603                 :            :  * @mmap_addr :
     604                 :            :  *      Check permissions for a mmap operation at @addr.
     605                 :            :  *      @addr contains virtual address that will be used for the operation.
     606                 :            :  *      Return 0 if permission is granted.
     607                 :            :  * @mmap_file :
     608                 :            :  *      Check permissions for a mmap operation.  The @file may be NULL, e.g.
     609                 :            :  *      if mapping anonymous memory.
     610                 :            :  *      @file contains the file structure for file to map (may be NULL).
     611                 :            :  *      @reqprot contains the protection requested by the application.
     612                 :            :  *      @prot contains the protection that will be applied by the kernel.
     613                 :            :  *      @flags contains the operational flags.
     614                 :            :  *      Return 0 if permission is granted.
     615                 :            :  * @file_mprotect:
     616                 :            :  *      Check permissions before changing memory access permissions.
     617                 :            :  *      @vma contains the memory region to modify.
     618                 :            :  *      @reqprot contains the protection requested by the application.
     619                 :            :  *      @prot contains the protection that will be applied by the kernel.
     620                 :            :  *      Return 0 if permission is granted.
     621                 :            :  * @file_lock:
     622                 :            :  *      Check permission before performing file locking operations.
     623                 :            :  *      Note: this hook mediates both flock and fcntl style locks.
     624                 :            :  *      @file contains the file structure.
     625                 :            :  *      @cmd contains the posix-translated lock operation to perform
     626                 :            :  *      (e.g. F_RDLCK, F_WRLCK).
     627                 :            :  *      Return 0 if permission is granted.
     628                 :            :  * @file_fcntl:
     629                 :            :  *      Check permission before allowing the file operation specified by @cmd
     630                 :            :  *      from being performed on the file @file.  Note that @arg sometimes
     631                 :            :  *      represents a user space pointer; in other cases, it may be a simple
     632                 :            :  *      integer value.  When @arg represents a user space pointer, it should
     633                 :            :  *      never be used by the security module.
     634                 :            :  *      @file contains the file structure.
     635                 :            :  *      @cmd contains the operation to be performed.
     636                 :            :  *      @arg contains the operational arguments.
     637                 :            :  *      Return 0 if permission is granted.
     638                 :            :  * @file_set_fowner:
     639                 :            :  *      Save owner security information (typically from current->security) in
     640                 :            :  *      file->f_security for later use by the send_sigiotask hook.
     641                 :            :  *      @file contains the file structure to update.
     642                 :            :  *      Return 0 on success.
     643                 :            :  * @file_send_sigiotask:
     644                 :            :  *      Check permission for the file owner @fown to send SIGIO or SIGURG to the
     645                 :            :  *      process @tsk.  Note that this hook is sometimes called from interrupt.
     646                 :            :  *      Note that the fown_struct, @fown, is never outside the context of a
     647                 :            :  *      struct file, so the file structure (and associated security information)
     648                 :            :  *      can always be obtained:
     649                 :            :  *              container_of(fown, struct file, f_owner)
     650                 :            :  *      @tsk contains the structure of task receiving signal.
     651                 :            :  *      @fown contains the file owner information.
     652                 :            :  *      @sig is the signal that will be sent.  When 0, kernel sends SIGIO.
     653                 :            :  *      Return 0 if permission is granted.
     654                 :            :  * @file_receive:
     655                 :            :  *      This hook allows security modules to control the ability of a process
     656                 :            :  *      to receive an open file descriptor via socket IPC.
     657                 :            :  *      @file contains the file structure being received.
     658                 :            :  *      Return 0 if permission is granted.
     659                 :            :  * @file_open
     660                 :            :  *      Save open-time permission checking state for later use upon
     661                 :            :  *      file_permission, and recheck access if anything has changed
     662                 :            :  *      since inode_permission.
     663                 :            :  *
     664                 :            :  * Security hooks for task operations.
     665                 :            :  *
     666                 :            :  * @task_create:
     667                 :            :  *      Check permission before creating a child process.  See the clone(2)
     668                 :            :  *      manual page for definitions of the @clone_flags.
     669                 :            :  *      @clone_flags contains the flags indicating what should be shared.
     670                 :            :  *      Return 0 if permission is granted.
     671                 :            :  * @task_free:
     672                 :            :  *      @task task being freed
     673                 :            :  *      Handle release of task-related resources. (Note that this can be called
     674                 :            :  *      from interrupt context.)
     675                 :            :  * @cred_alloc_blank:
     676                 :            :  *      @cred points to the credentials.
     677                 :            :  *      @gfp indicates the atomicity of any memory allocations.
     678                 :            :  *      Only allocate sufficient memory and attach to @cred such that
     679                 :            :  *      cred_transfer() will not get ENOMEM.
     680                 :            :  * @cred_free:
     681                 :            :  *      @cred points to the credentials.
     682                 :            :  *      Deallocate and clear the cred->security field in a set of credentials.
     683                 :            :  * @cred_prepare:
     684                 :            :  *      @new points to the new credentials.
     685                 :            :  *      @old points to the original credentials.
     686                 :            :  *      @gfp indicates the atomicity of any memory allocations.
     687                 :            :  *      Prepare a new set of credentials by copying the data from the old set.
     688                 :            :  * @cred_transfer:
     689                 :            :  *      @new points to the new credentials.
     690                 :            :  *      @old points to the original credentials.
     691                 :            :  *      Transfer data from original creds to new creds
     692                 :            :  * @kernel_act_as:
     693                 :            :  *      Set the credentials for a kernel service to act as (subjective context).
     694                 :            :  *      @new points to the credentials to be modified.
     695                 :            :  *      @secid specifies the security ID to be set
     696                 :            :  *      The current task must be the one that nominated @secid.
     697                 :            :  *      Return 0 if successful.
     698                 :            :  * @kernel_create_files_as:
     699                 :            :  *      Set the file creation context in a set of credentials to be the same as
     700                 :            :  *      the objective context of the specified inode.
     701                 :            :  *      @new points to the credentials to be modified.
     702                 :            :  *      @inode points to the inode to use as a reference.
     703                 :            :  *      The current task must be the one that nominated @inode.
     704                 :            :  *      Return 0 if successful.
     705                 :            :  * @kernel_module_request:
     706                 :            :  *      Ability to trigger the kernel to automatically upcall to userspace for
     707                 :            :  *      userspace to load a kernel module with the given name.
     708                 :            :  *      @kmod_name name of the module requested by the kernel
     709                 :            :  *      Return 0 if successful.
     710                 :            :  * @kernel_module_from_file:
     711                 :            :  *      Load a kernel module from userspace.
     712                 :            :  *      @file contains the file structure pointing to the file containing
     713                 :            :  *      the kernel module to load. If the module is being loaded from a blob,
     714                 :            :  *      this argument will be NULL.
     715                 :            :  *      Return 0 if permission is granted.
     716                 :            :  * @task_fix_setuid:
     717                 :            :  *      Update the module's state after setting one or more of the user
     718                 :            :  *      identity attributes of the current process.  The @flags parameter
     719                 :            :  *      indicates which of the set*uid system calls invoked this hook.  If
     720                 :            :  *      @new is the set of credentials that will be installed.  Modifications
     721                 :            :  *      should be made to this rather than to @current->cred.
     722                 :            :  *      @old is the set of credentials that are being replaces
     723                 :            :  *      @flags contains one of the LSM_SETID_* values.
     724                 :            :  *      Return 0 on success.
     725                 :            :  * @task_setpgid:
     726                 :            :  *      Check permission before setting the process group identifier of the
     727                 :            :  *      process @p to @pgid.
     728                 :            :  *      @p contains the task_struct for process being modified.
     729                 :            :  *      @pgid contains the new pgid.
     730                 :            :  *      Return 0 if permission is granted.
     731                 :            :  * @task_getpgid:
     732                 :            :  *      Check permission before getting the process group identifier of the
     733                 :            :  *      process @p.
     734                 :            :  *      @p contains the task_struct for the process.
     735                 :            :  *      Return 0 if permission is granted.
     736                 :            :  * @task_getsid:
     737                 :            :  *      Check permission before getting the session identifier of the process
     738                 :            :  *      @p.
     739                 :            :  *      @p contains the task_struct for the process.
     740                 :            :  *      Return 0 if permission is granted.
     741                 :            :  * @task_getsecid:
     742                 :            :  *      Retrieve the security identifier of the process @p.
     743                 :            :  *      @p contains the task_struct for the process and place is into @secid.
     744                 :            :  *      In case of failure, @secid will be set to zero.
     745                 :            :  *
     746                 :            :  * @task_setnice:
     747                 :            :  *      Check permission before setting the nice value of @p to @nice.
     748                 :            :  *      @p contains the task_struct of process.
     749                 :            :  *      @nice contains the new nice value.
     750                 :            :  *      Return 0 if permission is granted.
     751                 :            :  * @task_setioprio
     752                 :            :  *      Check permission before setting the ioprio value of @p to @ioprio.
     753                 :            :  *      @p contains the task_struct of process.
     754                 :            :  *      @ioprio contains the new ioprio value
     755                 :            :  *      Return 0 if permission is granted.
     756                 :            :  * @task_getioprio
     757                 :            :  *      Check permission before getting the ioprio value of @p.
     758                 :            :  *      @p contains the task_struct of process.
     759                 :            :  *      Return 0 if permission is granted.
     760                 :            :  * @task_setrlimit:
     761                 :            :  *      Check permission before setting the resource limits of the current
     762                 :            :  *      process for @resource to @new_rlim.  The old resource limit values can
     763                 :            :  *      be examined by dereferencing (current->signal->rlim + resource).
     764                 :            :  *      @resource contains the resource whose limit is being set.
     765                 :            :  *      @new_rlim contains the new limits for @resource.
     766                 :            :  *      Return 0 if permission is granted.
     767                 :            :  * @task_setscheduler:
     768                 :            :  *      Check permission before setting scheduling policy and/or parameters of
     769                 :            :  *      process @p based on @policy and @lp.
     770                 :            :  *      @p contains the task_struct for process.
     771                 :            :  *      @policy contains the scheduling policy.
     772                 :            :  *      @lp contains the scheduling parameters.
     773                 :            :  *      Return 0 if permission is granted.
     774                 :            :  * @task_getscheduler:
     775                 :            :  *      Check permission before obtaining scheduling information for process
     776                 :            :  *      @p.
     777                 :            :  *      @p contains the task_struct for process.
     778                 :            :  *      Return 0 if permission is granted.
     779                 :            :  * @task_movememory
     780                 :            :  *      Check permission before moving memory owned by process @p.
     781                 :            :  *      @p contains the task_struct for process.
     782                 :            :  *      Return 0 if permission is granted.
     783                 :            :  * @task_kill:
     784                 :            :  *      Check permission before sending signal @sig to @p.  @info can be NULL,
     785                 :            :  *      the constant 1, or a pointer to a siginfo structure.  If @info is 1 or
     786                 :            :  *      SI_FROMKERNEL(info) is true, then the signal should be viewed as coming
     787                 :            :  *      from the kernel and should typically be permitted.
     788                 :            :  *      SIGIO signals are handled separately by the send_sigiotask hook in
     789                 :            :  *      file_security_ops.
     790                 :            :  *      @p contains the task_struct for process.
     791                 :            :  *      @info contains the signal information.
     792                 :            :  *      @sig contains the signal value.
     793                 :            :  *      @secid contains the sid of the process where the signal originated
     794                 :            :  *      Return 0 if permission is granted.
     795                 :            :  * @task_wait:
     796                 :            :  *      Check permission before allowing a process to reap a child process @p
     797                 :            :  *      and collect its status information.
     798                 :            :  *      @p contains the task_struct for process.
     799                 :            :  *      Return 0 if permission is granted.
     800                 :            :  * @task_prctl:
     801                 :            :  *      Check permission before performing a process control operation on the
     802                 :            :  *      current process.
     803                 :            :  *      @option contains the operation.
     804                 :            :  *      @arg2 contains a argument.
     805                 :            :  *      @arg3 contains a argument.
     806                 :            :  *      @arg4 contains a argument.
     807                 :            :  *      @arg5 contains a argument.
     808                 :            :  *      Return -ENOSYS if no-one wanted to handle this op, any other value to
     809                 :            :  *      cause prctl() to return immediately with that value.
     810                 :            :  * @task_to_inode:
     811                 :            :  *      Set the security attributes for an inode based on an associated task's
     812                 :            :  *      security attributes, e.g. for /proc/pid inodes.
     813                 :            :  *      @p contains the task_struct for the task.
     814                 :            :  *      @inode contains the inode structure for the inode.
     815                 :            :  *
     816                 :            :  * Security hooks for Netlink messaging.
     817                 :            :  *
     818                 :            :  * @netlink_send:
     819                 :            :  *      Save security information for a netlink message so that permission
     820                 :            :  *      checking can be performed when the message is processed.  The security
     821                 :            :  *      information can be saved using the eff_cap field of the
     822                 :            :  *      netlink_skb_parms structure.  Also may be used to provide fine
     823                 :            :  *      grained control over message transmission.
     824                 :            :  *      @sk associated sock of task sending the message.
     825                 :            :  *      @skb contains the sk_buff structure for the netlink message.
     826                 :            :  *      Return 0 if the information was successfully saved and message
     827                 :            :  *      is allowed to be transmitted.
     828                 :            :  *
     829                 :            :  * Security hooks for Unix domain networking.
     830                 :            :  *
     831                 :            :  * @unix_stream_connect:
     832                 :            :  *      Check permissions before establishing a Unix domain stream connection
     833                 :            :  *      between @sock and @other.
     834                 :            :  *      @sock contains the sock structure.
     835                 :            :  *      @other contains the peer sock structure.
     836                 :            :  *      @newsk contains the new sock structure.
     837                 :            :  *      Return 0 if permission is granted.
     838                 :            :  * @unix_may_send:
     839                 :            :  *      Check permissions before connecting or sending datagrams from @sock to
     840                 :            :  *      @other.
     841                 :            :  *      @sock contains the socket structure.
     842                 :            :  *      @other contains the peer socket structure.
     843                 :            :  *      Return 0 if permission is granted.
     844                 :            :  *
     845                 :            :  * The @unix_stream_connect and @unix_may_send hooks were necessary because
     846                 :            :  * Linux provides an alternative to the conventional file name space for Unix
     847                 :            :  * domain sockets.  Whereas binding and connecting to sockets in the file name
     848                 :            :  * space is mediated by the typical file permissions (and caught by the mknod
     849                 :            :  * and permission hooks in inode_security_ops), binding and connecting to
     850                 :            :  * sockets in the abstract name space is completely unmediated.  Sufficient
     851                 :            :  * control of Unix domain sockets in the abstract name space isn't possible
     852                 :            :  * using only the socket layer hooks, since we need to know the actual target
     853                 :            :  * socket, which is not looked up until we are inside the af_unix code.
     854                 :            :  *
     855                 :            :  * Security hooks for socket operations.
     856                 :            :  *
     857                 :            :  * @socket_create:
     858                 :            :  *      Check permissions prior to creating a new socket.
     859                 :            :  *      @family contains the requested protocol family.
     860                 :            :  *      @type contains the requested communications type.
     861                 :            :  *      @protocol contains the requested protocol.
     862                 :            :  *      @kern set to 1 if a kernel socket.
     863                 :            :  *      Return 0 if permission is granted.
     864                 :            :  * @socket_post_create:
     865                 :            :  *      This hook allows a module to update or allocate a per-socket security
     866                 :            :  *      structure. Note that the security field was not added directly to the
     867                 :            :  *      socket structure, but rather, the socket security information is stored
     868                 :            :  *      in the associated inode.  Typically, the inode alloc_security hook will
     869                 :            :  *      allocate and and attach security information to
     870                 :            :  *      sock->inode->i_security.  This hook may be used to update the
     871                 :            :  *      sock->inode->i_security field with additional information that wasn't
     872                 :            :  *      available when the inode was allocated.
     873                 :            :  *      @sock contains the newly created socket structure.
     874                 :            :  *      @family contains the requested protocol family.
     875                 :            :  *      @type contains the requested communications type.
     876                 :            :  *      @protocol contains the requested protocol.
     877                 :            :  *      @kern set to 1 if a kernel socket.
     878                 :            :  * @socket_bind:
     879                 :            :  *      Check permission before socket protocol layer bind operation is
     880                 :            :  *      performed and the socket @sock is bound to the address specified in the
     881                 :            :  *      @address parameter.
     882                 :            :  *      @sock contains the socket structure.
     883                 :            :  *      @address contains the address to bind to.
     884                 :            :  *      @addrlen contains the length of address.
     885                 :            :  *      Return 0 if permission is granted.
     886                 :            :  * @socket_connect:
     887                 :            :  *      Check permission before socket protocol layer connect operation
     888                 :            :  *      attempts to connect socket @sock to a remote address, @address.
     889                 :            :  *      @sock contains the socket structure.
     890                 :            :  *      @address contains the address of remote endpoint.
     891                 :            :  *      @addrlen contains the length of address.
     892                 :            :  *      Return 0 if permission is granted.
     893                 :            :  * @socket_listen:
     894                 :            :  *      Check permission before socket protocol layer listen operation.
     895                 :            :  *      @sock contains the socket structure.
     896                 :            :  *      @backlog contains the maximum length for the pending connection queue.
     897                 :            :  *      Return 0 if permission is granted.
     898                 :            :  * @socket_accept:
     899                 :            :  *      Check permission before accepting a new connection.  Note that the new
     900                 :            :  *      socket, @newsock, has been created and some information copied to it,
     901                 :            :  *      but the accept operation has not actually been performed.
     902                 :            :  *      @sock contains the listening socket structure.
     903                 :            :  *      @newsock contains the newly created server socket for connection.
     904                 :            :  *      Return 0 if permission is granted.
     905                 :            :  * @socket_sendmsg:
     906                 :            :  *      Check permission before transmitting a message to another socket.
     907                 :            :  *      @sock contains the socket structure.
     908                 :            :  *      @msg contains the message to be transmitted.
     909                 :            :  *      @size contains the size of message.
     910                 :            :  *      Return 0 if permission is granted.
     911                 :            :  * @socket_recvmsg:
     912                 :            :  *      Check permission before receiving a message from a socket.
     913                 :            :  *      @sock contains the socket structure.
     914                 :            :  *      @msg contains the message structure.
     915                 :            :  *      @size contains the size of message structure.
     916                 :            :  *      @flags contains the operational flags.
     917                 :            :  *      Return 0 if permission is granted.
     918                 :            :  * @socket_getsockname:
     919                 :            :  *      Check permission before the local address (name) of the socket object
     920                 :            :  *      @sock is retrieved.
     921                 :            :  *      @sock contains the socket structure.
     922                 :            :  *      Return 0 if permission is granted.
     923                 :            :  * @socket_getpeername:
     924                 :            :  *      Check permission before the remote address (name) of a socket object
     925                 :            :  *      @sock is retrieved.
     926                 :            :  *      @sock contains the socket structure.
     927                 :            :  *      Return 0 if permission is granted.
     928                 :            :  * @socket_getsockopt:
     929                 :            :  *      Check permissions before retrieving the options associated with socket
     930                 :            :  *      @sock.
     931                 :            :  *      @sock contains the socket structure.
     932                 :            :  *      @level contains the protocol level to retrieve option from.
     933                 :            :  *      @optname contains the name of option to retrieve.
     934                 :            :  *      Return 0 if permission is granted.
     935                 :            :  * @socket_setsockopt:
     936                 :            :  *      Check permissions before setting the options associated with socket
     937                 :            :  *      @sock.
     938                 :            :  *      @sock contains the socket structure.
     939                 :            :  *      @level contains the protocol level to set options for.
     940                 :            :  *      @optname contains the name of the option to set.
     941                 :            :  *      Return 0 if permission is granted.
     942                 :            :  * @socket_shutdown:
     943                 :            :  *      Checks permission before all or part of a connection on the socket
     944                 :            :  *      @sock is shut down.
     945                 :            :  *      @sock contains the socket structure.
     946                 :            :  *      @how contains the flag indicating how future sends and receives are handled.
     947                 :            :  *      Return 0 if permission is granted.
     948                 :            :  * @socket_sock_rcv_skb:
     949                 :            :  *      Check permissions on incoming network packets.  This hook is distinct
     950                 :            :  *      from Netfilter's IP input hooks since it is the first time that the
     951                 :            :  *      incoming sk_buff @skb has been associated with a particular socket, @sk.
     952                 :            :  *      Must not sleep inside this hook because some callers hold spinlocks.
     953                 :            :  *      @sk contains the sock (not socket) associated with the incoming sk_buff.
     954                 :            :  *      @skb contains the incoming network data.
     955                 :            :  * @socket_getpeersec_stream:
     956                 :            :  *      This hook allows the security module to provide peer socket security
     957                 :            :  *      state for unix or connected tcp sockets to userspace via getsockopt
     958                 :            :  *      SO_GETPEERSEC.  For tcp sockets this can be meaningful if the
     959                 :            :  *      socket is associated with an ipsec SA.
     960                 :            :  *      @sock is the local socket.
     961                 :            :  *      @optval userspace memory where the security state is to be copied.
     962                 :            :  *      @optlen userspace int where the module should copy the actual length
     963                 :            :  *      of the security state.
     964                 :            :  *      @len as input is the maximum length to copy to userspace provided
     965                 :            :  *      by the caller.
     966                 :            :  *      Return 0 if all is well, otherwise, typical getsockopt return
     967                 :            :  *      values.
     968                 :            :  * @socket_getpeersec_dgram:
     969                 :            :  *      This hook allows the security module to provide peer socket security
     970                 :            :  *      state for udp sockets on a per-packet basis to userspace via
     971                 :            :  *      getsockopt SO_GETPEERSEC.  The application must first have indicated
     972                 :            :  *      the IP_PASSSEC option via getsockopt.  It can then retrieve the
     973                 :            :  *      security state returned by this hook for a packet via the SCM_SECURITY
     974                 :            :  *      ancillary message type.
     975                 :            :  *      @skb is the skbuff for the packet being queried
     976                 :            :  *      @secdata is a pointer to a buffer in which to copy the security data
     977                 :            :  *      @seclen is the maximum length for @secdata
     978                 :            :  *      Return 0 on success, error on failure.
     979                 :            :  * @sk_alloc_security:
     980                 :            :  *      Allocate and attach a security structure to the sk->sk_security field,
     981                 :            :  *      which is used to copy security attributes between local stream sockets.
     982                 :            :  * @sk_free_security:
     983                 :            :  *      Deallocate security structure.
     984                 :            :  * @sk_clone_security:
     985                 :            :  *      Clone/copy security structure.
     986                 :            :  * @sk_getsecid:
     987                 :            :  *      Retrieve the LSM-specific secid for the sock to enable caching of network
     988                 :            :  *      authorizations.
     989                 :            :  * @sock_graft:
     990                 :            :  *      Sets the socket's isec sid to the sock's sid.
     991                 :            :  * @inet_conn_request:
     992                 :            :  *      Sets the openreq's sid to socket's sid with MLS portion taken from peer sid.
     993                 :            :  * @inet_csk_clone:
     994                 :            :  *      Sets the new child socket's sid to the openreq sid.
     995                 :            :  * @inet_conn_established:
     996                 :            :  *      Sets the connection's peersid to the secmark on skb.
     997                 :            :  * @secmark_relabel_packet:
     998                 :            :  *      check if the process should be allowed to relabel packets to the given secid
     999                 :            :  * @security_secmark_refcount_inc
    1000                 :            :  *      tells the LSM to increment the number of secmark labeling rules loaded
    1001                 :            :  * @security_secmark_refcount_dec
    1002                 :            :  *      tells the LSM to decrement the number of secmark labeling rules loaded
    1003                 :            :  * @req_classify_flow:
    1004                 :            :  *      Sets the flow's sid to the openreq sid.
    1005                 :            :  * @tun_dev_alloc_security:
    1006                 :            :  *      This hook allows a module to allocate a security structure for a TUN
    1007                 :            :  *      device.
    1008                 :            :  *      @security pointer to a security structure pointer.
    1009                 :            :  *      Returns a zero on success, negative values on failure.
    1010                 :            :  * @tun_dev_free_security:
    1011                 :            :  *      This hook allows a module to free the security structure for a TUN
    1012                 :            :  *      device.
    1013                 :            :  *      @security pointer to the TUN device's security structure
    1014                 :            :  * @tun_dev_create:
    1015                 :            :  *      Check permissions prior to creating a new TUN device.
    1016                 :            :  * @tun_dev_attach_queue:
    1017                 :            :  *      Check permissions prior to attaching to a TUN device queue.
    1018                 :            :  *      @security pointer to the TUN device's security structure.
    1019                 :            :  * @tun_dev_attach:
    1020                 :            :  *      This hook can be used by the module to update any security state
    1021                 :            :  *      associated with the TUN device's sock structure.
    1022                 :            :  *      @sk contains the existing sock structure.
    1023                 :            :  *      @security pointer to the TUN device's security structure.
    1024                 :            :  * @tun_dev_open:
    1025                 :            :  *      This hook can be used by the module to update any security state
    1026                 :            :  *      associated with the TUN device's security structure.
    1027                 :            :  *      @security pointer to the TUN devices's security structure.
    1028                 :            :  * @skb_owned_by:
    1029                 :            :  *      This hook sets the packet's owning sock.
    1030                 :            :  *      @skb is the packet.
    1031                 :            :  *      @sk the sock which owns the packet.
    1032                 :            :  *
    1033                 :            :  * Security hooks for XFRM operations.
    1034                 :            :  *
    1035                 :            :  * @xfrm_policy_alloc_security:
    1036                 :            :  *      @ctxp is a pointer to the xfrm_sec_ctx being added to Security Policy
    1037                 :            :  *      Database used by the XFRM system.
    1038                 :            :  *      @sec_ctx contains the security context information being provided by
    1039                 :            :  *      the user-level policy update program (e.g., setkey).
    1040                 :            :  *      Allocate a security structure to the xp->security field; the security
    1041                 :            :  *      field is initialized to NULL when the xfrm_policy is allocated.
    1042                 :            :  *      Return 0 if operation was successful (memory to allocate, legal context)
    1043                 :            :  * @xfrm_policy_clone_security:
    1044                 :            :  *      @old_ctx contains an existing xfrm_sec_ctx.
    1045                 :            :  *      @new_ctxp contains a new xfrm_sec_ctx being cloned from old.
    1046                 :            :  *      Allocate a security structure in new_ctxp that contains the
    1047                 :            :  *      information from the old_ctx structure.
    1048                 :            :  *      Return 0 if operation was successful (memory to allocate).
    1049                 :            :  * @xfrm_policy_free_security:
    1050                 :            :  *      @ctx contains the xfrm_sec_ctx
    1051                 :            :  *      Deallocate xp->security.
    1052                 :            :  * @xfrm_policy_delete_security:
    1053                 :            :  *      @ctx contains the xfrm_sec_ctx.
    1054                 :            :  *      Authorize deletion of xp->security.
    1055                 :            :  * @xfrm_state_alloc:
    1056                 :            :  *      @x contains the xfrm_state being added to the Security Association
    1057                 :            :  *      Database by the XFRM system.
    1058                 :            :  *      @sec_ctx contains the security context information being provided by
    1059                 :            :  *      the user-level SA generation program (e.g., setkey or racoon).
    1060                 :            :  *      Allocate a security structure to the x->security field; the security
    1061                 :            :  *      field is initialized to NULL when the xfrm_state is allocated. Set the
    1062                 :            :  *      context to correspond to sec_ctx. Return 0 if operation was successful
    1063                 :            :  *      (memory to allocate, legal context).
    1064                 :            :  * @xfrm_state_alloc_acquire:
    1065                 :            :  *      @x contains the xfrm_state being added to the Security Association
    1066                 :            :  *      Database by the XFRM system.
    1067                 :            :  *      @polsec contains the policy's security context.
    1068                 :            :  *      @secid contains the secid from which to take the mls portion of the
    1069                 :            :  *      context.
    1070                 :            :  *      Allocate a security structure to the x->security field; the security
    1071                 :            :  *      field is initialized to NULL when the xfrm_state is allocated. Set the
    1072                 :            :  *      context to correspond to secid. Return 0 if operation was successful
    1073                 :            :  *      (memory to allocate, legal context).
    1074                 :            :  * @xfrm_state_free_security:
    1075                 :            :  *      @x contains the xfrm_state.
    1076                 :            :  *      Deallocate x->security.
    1077                 :            :  * @xfrm_state_delete_security:
    1078                 :            :  *      @x contains the xfrm_state.
    1079                 :            :  *      Authorize deletion of x->security.
    1080                 :            :  * @xfrm_policy_lookup:
    1081                 :            :  *      @ctx contains the xfrm_sec_ctx for which the access control is being
    1082                 :            :  *      checked.
    1083                 :            :  *      @fl_secid contains the flow security label that is used to authorize
    1084                 :            :  *      access to the policy xp.
    1085                 :            :  *      @dir contains the direction of the flow (input or output).
    1086                 :            :  *      Check permission when a flow selects a xfrm_policy for processing
    1087                 :            :  *      XFRMs on a packet.  The hook is called when selecting either a
    1088                 :            :  *      per-socket policy or a generic xfrm policy.
    1089                 :            :  *      Return 0 if permission is granted, -ESRCH otherwise, or -errno
    1090                 :            :  *      on other errors.
    1091                 :            :  * @xfrm_state_pol_flow_match:
    1092                 :            :  *      @x contains the state to match.
    1093                 :            :  *      @xp contains the policy to check for a match.
    1094                 :            :  *      @fl contains the flow to check for a match.
    1095                 :            :  *      Return 1 if there is a match.
    1096                 :            :  * @xfrm_decode_session:
    1097                 :            :  *      @skb points to skb to decode.
    1098                 :            :  *      @secid points to the flow key secid to set.
    1099                 :            :  *      @ckall says if all xfrms used should be checked for same secid.
    1100                 :            :  *      Return 0 if ckall is zero or all xfrms used have the same secid.
    1101                 :            :  *
    1102                 :            :  * Security hooks affecting all Key Management operations
    1103                 :            :  *
    1104                 :            :  * @key_alloc:
    1105                 :            :  *      Permit allocation of a key and assign security data. Note that key does
    1106                 :            :  *      not have a serial number assigned at this point.
    1107                 :            :  *      @key points to the key.
    1108                 :            :  *      @flags is the allocation flags
    1109                 :            :  *      Return 0 if permission is granted, -ve error otherwise.
    1110                 :            :  * @key_free:
    1111                 :            :  *      Notification of destruction; free security data.
    1112                 :            :  *      @key points to the key.
    1113                 :            :  *      No return value.
    1114                 :            :  * @key_permission:
    1115                 :            :  *      See whether a specific operational right is granted to a process on a
    1116                 :            :  *      key.
    1117                 :            :  *      @key_ref refers to the key (key pointer + possession attribute bit).
    1118                 :            :  *      @cred points to the credentials to provide the context against which to
    1119                 :            :  *      evaluate the security data on the key.
    1120                 :            :  *      @perm describes the combination of permissions required of this key.
    1121                 :            :  *      Return 0 if permission is granted, -ve error otherwise.
    1122                 :            :  * @key_getsecurity:
    1123                 :            :  *      Get a textual representation of the security context attached to a key
    1124                 :            :  *      for the purposes of honouring KEYCTL_GETSECURITY.  This function
    1125                 :            :  *      allocates the storage for the NUL-terminated string and the caller
    1126                 :            :  *      should free it.
    1127                 :            :  *      @key points to the key to be queried.
    1128                 :            :  *      @_buffer points to a pointer that should be set to point to the
    1129                 :            :  *      resulting string (if no label or an error occurs).
    1130                 :            :  *      Return the length of the string (including terminating NUL) or -ve if
    1131                 :            :  *      an error.
    1132                 :            :  *      May also return 0 (and a NULL buffer pointer) if there is no label.
    1133                 :            :  *
    1134                 :            :  * Security hooks affecting all System V IPC operations.
    1135                 :            :  *
    1136                 :            :  * @ipc_permission:
    1137                 :            :  *      Check permissions for access to IPC
    1138                 :            :  *      @ipcp contains the kernel IPC permission structure
    1139                 :            :  *      @flag contains the desired (requested) permission set
    1140                 :            :  *      Return 0 if permission is granted.
    1141                 :            :  * @ipc_getsecid:
    1142                 :            :  *      Get the secid associated with the ipc object.
    1143                 :            :  *      @ipcp contains the kernel IPC permission structure.
    1144                 :            :  *      @secid contains a pointer to the location where result will be saved.
    1145                 :            :  *      In case of failure, @secid will be set to zero.
    1146                 :            :  *
    1147                 :            :  * Security hooks for individual messages held in System V IPC message queues
    1148                 :            :  * @msg_msg_alloc_security:
    1149                 :            :  *      Allocate and attach a security structure to the msg->security field.
    1150                 :            :  *      The security field is initialized to NULL when the structure is first
    1151                 :            :  *      created.
    1152                 :            :  *      @msg contains the message structure to be modified.
    1153                 :            :  *      Return 0 if operation was successful and permission is granted.
    1154                 :            :  * @msg_msg_free_security:
    1155                 :            :  *      Deallocate the security structure for this message.
    1156                 :            :  *      @msg contains the message structure to be modified.
    1157                 :            :  *
    1158                 :            :  * Security hooks for System V IPC Message Queues
    1159                 :            :  *
    1160                 :            :  * @msg_queue_alloc_security:
    1161                 :            :  *      Allocate and attach a security structure to the
    1162                 :            :  *      msq->q_perm.security field. The security field is initialized to
    1163                 :            :  *      NULL when the structure is first created.
    1164                 :            :  *      @msq contains the message queue structure to be modified.
    1165                 :            :  *      Return 0 if operation was successful and permission is granted.
    1166                 :            :  * @msg_queue_free_security:
    1167                 :            :  *      Deallocate security structure for this message queue.
    1168                 :            :  *      @msq contains the message queue structure to be modified.
    1169                 :            :  * @msg_queue_associate:
    1170                 :            :  *      Check permission when a message queue is requested through the
    1171                 :            :  *      msgget system call.  This hook is only called when returning the
    1172                 :            :  *      message queue identifier for an existing message queue, not when a
    1173                 :            :  *      new message queue is created.
    1174                 :            :  *      @msq contains the message queue to act upon.
    1175                 :            :  *      @msqflg contains the operation control flags.
    1176                 :            :  *      Return 0 if permission is granted.
    1177                 :            :  * @msg_queue_msgctl:
    1178                 :            :  *      Check permission when a message control operation specified by @cmd
    1179                 :            :  *      is to be performed on the message queue @msq.
    1180                 :            :  *      The @msq may be NULL, e.g. for IPC_INFO or MSG_INFO.
    1181                 :            :  *      @msq contains the message queue to act upon.  May be NULL.
    1182                 :            :  *      @cmd contains the operation to be performed.
    1183                 :            :  *      Return 0 if permission is granted.
    1184                 :            :  * @msg_queue_msgsnd:
    1185                 :            :  *      Check permission before a message, @msg, is enqueued on the message
    1186                 :            :  *      queue, @msq.
    1187                 :            :  *      @msq contains the message queue to send message to.
    1188                 :            :  *      @msg contains the message to be enqueued.
    1189                 :            :  *      @msqflg contains operational flags.
    1190                 :            :  *      Return 0 if permission is granted.
    1191                 :            :  * @msg_queue_msgrcv:
    1192                 :            :  *      Check permission before a message, @msg, is removed from the message
    1193                 :            :  *      queue, @msq.  The @target task structure contains a pointer to the
    1194                 :            :  *      process that will be receiving the message (not equal to the current
    1195                 :            :  *      process when inline receives are being performed).
    1196                 :            :  *      @msq contains the message queue to retrieve message from.
    1197                 :            :  *      @msg contains the message destination.
    1198                 :            :  *      @target contains the task structure for recipient process.
    1199                 :            :  *      @type contains the type of message requested.
    1200                 :            :  *      @mode contains the operational flags.
    1201                 :            :  *      Return 0 if permission is granted.
    1202                 :            :  *
    1203                 :            :  * Security hooks for System V Shared Memory Segments
    1204                 :            :  *
    1205                 :            :  * @shm_alloc_security:
    1206                 :            :  *      Allocate and attach a security structure to the shp->shm_perm.security
    1207                 :            :  *      field.  The security field is initialized to NULL when the structure is
    1208                 :            :  *      first created.
    1209                 :            :  *      @shp contains the shared memory structure to be modified.
    1210                 :            :  *      Return 0 if operation was successful and permission is granted.
    1211                 :            :  * @shm_free_security:
    1212                 :            :  *      Deallocate the security struct for this memory segment.
    1213                 :            :  *      @shp contains the shared memory structure to be modified.
    1214                 :            :  * @shm_associate:
    1215                 :            :  *      Check permission when a shared memory region is requested through the
    1216                 :            :  *      shmget system call.  This hook is only called when returning the shared
    1217                 :            :  *      memory region identifier for an existing region, not when a new shared
    1218                 :            :  *      memory region is created.
    1219                 :            :  *      @shp contains the shared memory structure to be modified.
    1220                 :            :  *      @shmflg contains the operation control flags.
    1221                 :            :  *      Return 0 if permission is granted.
    1222                 :            :  * @shm_shmctl:
    1223                 :            :  *      Check permission when a shared memory control operation specified by
    1224                 :            :  *      @cmd is to be performed on the shared memory region @shp.
    1225                 :            :  *      The @shp may be NULL, e.g. for IPC_INFO or SHM_INFO.
    1226                 :            :  *      @shp contains shared memory structure to be modified.
    1227                 :            :  *      @cmd contains the operation to be performed.
    1228                 :            :  *      Return 0 if permission is granted.
    1229                 :            :  * @shm_shmat:
    1230                 :            :  *      Check permissions prior to allowing the shmat system call to attach the
    1231                 :            :  *      shared memory segment @shp to the data segment of the calling process.
    1232                 :            :  *      The attaching address is specified by @shmaddr.
    1233                 :            :  *      @shp contains the shared memory structure to be modified.
    1234                 :            :  *      @shmaddr contains the address to attach memory region to.
    1235                 :            :  *      @shmflg contains the operational flags.
    1236                 :            :  *      Return 0 if permission is granted.
    1237                 :            :  *
    1238                 :            :  * Security hooks for System V Semaphores
    1239                 :            :  *
    1240                 :            :  * @sem_alloc_security:
    1241                 :            :  *      Allocate and attach a security structure to the sma->sem_perm.security
    1242                 :            :  *      field.  The security field is initialized to NULL when the structure is
    1243                 :            :  *      first created.
    1244                 :            :  *      @sma contains the semaphore structure
    1245                 :            :  *      Return 0 if operation was successful and permission is granted.
    1246                 :            :  * @sem_free_security:
    1247                 :            :  *      deallocate security struct for this semaphore
    1248                 :            :  *      @sma contains the semaphore structure.
    1249                 :            :  * @sem_associate:
    1250                 :            :  *      Check permission when a semaphore is requested through the semget
    1251                 :            :  *      system call.  This hook is only called when returning the semaphore
    1252                 :            :  *      identifier for an existing semaphore, not when a new one must be
    1253                 :            :  *      created.
    1254                 :            :  *      @sma contains the semaphore structure.
    1255                 :            :  *      @semflg contains the operation control flags.
    1256                 :            :  *      Return 0 if permission is granted.
    1257                 :            :  * @sem_semctl:
    1258                 :            :  *      Check permission when a semaphore operation specified by @cmd is to be
    1259                 :            :  *      performed on the semaphore @sma.  The @sma may be NULL, e.g. for
    1260                 :            :  *      IPC_INFO or SEM_INFO.
    1261                 :            :  *      @sma contains the semaphore structure.  May be NULL.
    1262                 :            :  *      @cmd contains the operation to be performed.
    1263                 :            :  *      Return 0 if permission is granted.
    1264                 :            :  * @sem_semop
    1265                 :            :  *      Check permissions before performing operations on members of the
    1266                 :            :  *      semaphore set @sma.  If the @alter flag is nonzero, the semaphore set
    1267                 :            :  *      may be modified.
    1268                 :            :  *      @sma contains the semaphore structure.
    1269                 :            :  *      @sops contains the operations to perform.
    1270                 :            :  *      @nsops contains the number of operations to perform.
    1271                 :            :  *      @alter contains the flag indicating whether changes are to be made.
    1272                 :            :  *      Return 0 if permission is granted.
    1273                 :            :  *
    1274                 :            :  * @ptrace_access_check:
    1275                 :            :  *      Check permission before allowing the current process to trace the
    1276                 :            :  *      @child process.
    1277                 :            :  *      Security modules may also want to perform a process tracing check
    1278                 :            :  *      during an execve in the set_security or apply_creds hooks of
    1279                 :            :  *      tracing check during an execve in the bprm_set_creds hook of
    1280                 :            :  *      binprm_security_ops if the process is being traced and its security
    1281                 :            :  *      attributes would be changed by the execve.
    1282                 :            :  *      @child contains the task_struct structure for the target process.
    1283                 :            :  *      @mode contains the PTRACE_MODE flags indicating the form of access.
    1284                 :            :  *      Return 0 if permission is granted.
    1285                 :            :  * @ptrace_traceme:
    1286                 :            :  *      Check that the @parent process has sufficient permission to trace the
    1287                 :            :  *      current process before allowing the current process to present itself
    1288                 :            :  *      to the @parent process for tracing.
    1289                 :            :  *      @parent contains the task_struct structure for debugger process.
    1290                 :            :  *      Return 0 if permission is granted.
    1291                 :            :  * @capget:
    1292                 :            :  *      Get the @effective, @inheritable, and @permitted capability sets for
    1293                 :            :  *      the @target process.  The hook may also perform permission checking to
    1294                 :            :  *      determine if the current process is allowed to see the capability sets
    1295                 :            :  *      of the @target process.
    1296                 :            :  *      @target contains the task_struct structure for target process.
    1297                 :            :  *      @effective contains the effective capability set.
    1298                 :            :  *      @inheritable contains the inheritable capability set.
    1299                 :            :  *      @permitted contains the permitted capability set.
    1300                 :            :  *      Return 0 if the capability sets were successfully obtained.
    1301                 :            :  * @capset:
    1302                 :            :  *      Set the @effective, @inheritable, and @permitted capability sets for
    1303                 :            :  *      the current process.
    1304                 :            :  *      @new contains the new credentials structure for target process.
    1305                 :            :  *      @old contains the current credentials structure for target process.
    1306                 :            :  *      @effective contains the effective capability set.
    1307                 :            :  *      @inheritable contains the inheritable capability set.
    1308                 :            :  *      @permitted contains the permitted capability set.
    1309                 :            :  *      Return 0 and update @new if permission is granted.
    1310                 :            :  * @capable:
    1311                 :            :  *      Check whether the @tsk process has the @cap capability in the indicated
    1312                 :            :  *      credentials.
    1313                 :            :  *      @cred contains the credentials to use.
    1314                 :            :  *      @ns contains the user namespace we want the capability in
    1315                 :            :  *      @cap contains the capability <include/linux/capability.h>.
    1316                 :            :  *      @audit: Whether to write an audit message or not
    1317                 :            :  *      Return 0 if the capability is granted for @tsk.
    1318                 :            :  * @syslog:
    1319                 :            :  *      Check permission before accessing the kernel message ring or changing
    1320                 :            :  *      logging to the console.
    1321                 :            :  *      See the syslog(2) manual page for an explanation of the @type values.
    1322                 :            :  *      @type contains the type of action.
    1323                 :            :  *      @from_file indicates the context of action (if it came from /proc).
    1324                 :            :  *      Return 0 if permission is granted.
    1325                 :            :  * @settime:
    1326                 :            :  *      Check permission to change the system time.
    1327                 :            :  *      struct timespec and timezone are defined in include/linux/time.h
    1328                 :            :  *      @ts contains new time
    1329                 :            :  *      @tz contains new timezone
    1330                 :            :  *      Return 0 if permission is granted.
    1331                 :            :  * @vm_enough_memory:
    1332                 :            :  *      Check permissions for allocating a new virtual mapping.
    1333                 :            :  *      @mm contains the mm struct it is being added to.
    1334                 :            :  *      @pages contains the number of pages.
    1335                 :            :  *      Return 0 if permission is granted.
    1336                 :            :  *
    1337                 :            :  * @ismaclabel:
    1338                 :            :  *      Check if the extended attribute specified by @name
    1339                 :            :  *      represents a MAC label. Returns 1 if name is a MAC
    1340                 :            :  *      attribute otherwise returns 0.
    1341                 :            :  *      @name full extended attribute name to check against
    1342                 :            :  *      LSM as a MAC label.
    1343                 :            :  *
    1344                 :            :  * @secid_to_secctx:
    1345                 :            :  *      Convert secid to security context.  If secdata is NULL the length of
    1346                 :            :  *      the result will be returned in seclen, but no secdata will be returned.
    1347                 :            :  *      This does mean that the length could change between calls to check the
    1348                 :            :  *      length and the next call which actually allocates and returns the secdata.
    1349                 :            :  *      @secid contains the security ID.
    1350                 :            :  *      @secdata contains the pointer that stores the converted security context.
    1351                 :            :  *      @seclen pointer which contains the length of the data
    1352                 :            :  * @secctx_to_secid:
    1353                 :            :  *      Convert security context to secid.
    1354                 :            :  *      @secid contains the pointer to the generated security ID.
    1355                 :            :  *      @secdata contains the security context.
    1356                 :            :  *
    1357                 :            :  * @release_secctx:
    1358                 :            :  *      Release the security context.
    1359                 :            :  *      @secdata contains the security context.
    1360                 :            :  *      @seclen contains the length of the security context.
    1361                 :            :  *
    1362                 :            :  * Security hooks for Audit
    1363                 :            :  *
    1364                 :            :  * @audit_rule_init:
    1365                 :            :  *      Allocate and initialize an LSM audit rule structure.
    1366                 :            :  *      @field contains the required Audit action. Fields flags are defined in include/linux/audit.h
    1367                 :            :  *      @op contains the operator the rule uses.
    1368                 :            :  *      @rulestr contains the context where the rule will be applied to.
    1369                 :            :  *      @lsmrule contains a pointer to receive the result.
    1370                 :            :  *      Return 0 if @lsmrule has been successfully set,
    1371                 :            :  *      -EINVAL in case of an invalid rule.
    1372                 :            :  *
    1373                 :            :  * @audit_rule_known:
    1374                 :            :  *      Specifies whether given @rule contains any fields related to current LSM.
    1375                 :            :  *      @rule contains the audit rule of interest.
    1376                 :            :  *      Return 1 in case of relation found, 0 otherwise.
    1377                 :            :  *
    1378                 :            :  * @audit_rule_match:
    1379                 :            :  *      Determine if given @secid matches a rule previously approved
    1380                 :            :  *      by @audit_rule_known.
    1381                 :            :  *      @secid contains the security id in question.
    1382                 :            :  *      @field contains the field which relates to current LSM.
    1383                 :            :  *      @op contains the operator that will be used for matching.
    1384                 :            :  *      @rule points to the audit rule that will be checked against.
    1385                 :            :  *      @actx points to the audit context associated with the check.
    1386                 :            :  *      Return 1 if secid matches the rule, 0 if it does not, -ERRNO on failure.
    1387                 :            :  *
    1388                 :            :  * @audit_rule_free:
    1389                 :            :  *      Deallocate the LSM audit rule structure previously allocated by
    1390                 :            :  *      audit_rule_init.
    1391                 :            :  *      @rule contains the allocated rule
    1392                 :            :  *
    1393                 :            :  * @inode_notifysecctx:
    1394                 :            :  *      Notify the security module of what the security context of an inode
    1395                 :            :  *      should be.  Initializes the incore security context managed by the
    1396                 :            :  *      security module for this inode.  Example usage:  NFS client invokes
    1397                 :            :  *      this hook to initialize the security context in its incore inode to the
    1398                 :            :  *      value provided by the server for the file when the server returned the
    1399                 :            :  *      file's attributes to the client.
    1400                 :            :  *
    1401                 :            :  *      Must be called with inode->i_mutex locked.
    1402                 :            :  *
    1403                 :            :  *      @inode we wish to set the security context of.
    1404                 :            :  *      @ctx contains the string which we wish to set in the inode.
    1405                 :            :  *      @ctxlen contains the length of @ctx.
    1406                 :            :  *
    1407                 :            :  * @inode_setsecctx:
    1408                 :            :  *      Change the security context of an inode.  Updates the
    1409                 :            :  *      incore security context managed by the security module and invokes the
    1410                 :            :  *      fs code as needed (via __vfs_setxattr_noperm) to update any backing
    1411                 :            :  *      xattrs that represent the context.  Example usage:  NFS server invokes
    1412                 :            :  *      this hook to change the security context in its incore inode and on the
    1413                 :            :  *      backing filesystem to a value provided by the client on a SETATTR
    1414                 :            :  *      operation.
    1415                 :            :  *
    1416                 :            :  *      Must be called with inode->i_mutex locked.
    1417                 :            :  *
    1418                 :            :  *      @dentry contains the inode we wish to set the security context of.
    1419                 :            :  *      @ctx contains the string which we wish to set in the inode.
    1420                 :            :  *      @ctxlen contains the length of @ctx.
    1421                 :            :  *
    1422                 :            :  * @inode_getsecctx:
    1423                 :            :  *      On success, returns 0 and fills out @ctx and @ctxlen with the security
    1424                 :            :  *      context for the given @inode.
    1425                 :            :  *
    1426                 :            :  *      @inode we wish to get the security context of.
    1427                 :            :  *      @ctx is a pointer in which to place the allocated security context.
    1428                 :            :  *      @ctxlen points to the place to put the length of @ctx.
    1429                 :            :  * This is the main security structure.
    1430                 :            :  */
    1431                 :            : struct security_operations {
    1432                 :            :         char name[SECURITY_NAME_MAX + 1];
    1433                 :            : 
    1434                 :            :         int (*binder_set_context_mgr) (struct task_struct *mgr);
    1435                 :            :         int (*binder_transaction) (struct task_struct *from, struct task_struct *to);
    1436                 :            :         int (*binder_transfer_binder) (struct task_struct *from, struct task_struct *to);
    1437                 :            :         int (*binder_transfer_file) (struct task_struct *from, struct task_struct *to, struct file *file);
    1438                 :            : 
    1439                 :            :         int (*ptrace_access_check) (struct task_struct *child, unsigned int mode);
    1440                 :            :         int (*ptrace_traceme) (struct task_struct *parent);
    1441                 :            :         int (*capget) (struct task_struct *target,
    1442                 :            :                        kernel_cap_t *effective,
    1443                 :            :                        kernel_cap_t *inheritable, kernel_cap_t *permitted);
    1444                 :            :         int (*capset) (struct cred *new,
    1445                 :            :                        const struct cred *old,
    1446                 :            :                        const kernel_cap_t *effective,
    1447                 :            :                        const kernel_cap_t *inheritable,
    1448                 :            :                        const kernel_cap_t *permitted);
    1449                 :            :         int (*capable) (const struct cred *cred, struct user_namespace *ns,
    1450                 :            :                         int cap, int audit);
    1451                 :            :         int (*quotactl) (int cmds, int type, int id, struct super_block *sb);
    1452                 :            :         int (*quota_on) (struct dentry *dentry);
    1453                 :            :         int (*syslog) (int type);
    1454                 :            :         int (*settime) (const struct timespec *ts, const struct timezone *tz);
    1455                 :            :         int (*vm_enough_memory) (struct mm_struct *mm, long pages);
    1456                 :            : 
    1457                 :            :         int (*bprm_set_creds) (struct linux_binprm *bprm);
    1458                 :            :         int (*bprm_check_security) (struct linux_binprm *bprm);
    1459                 :            :         int (*bprm_secureexec) (struct linux_binprm *bprm);
    1460                 :            :         void (*bprm_committing_creds) (struct linux_binprm *bprm);
    1461                 :            :         void (*bprm_committed_creds) (struct linux_binprm *bprm);
    1462                 :            : 
    1463                 :            :         int (*sb_alloc_security) (struct super_block *sb);
    1464                 :            :         void (*sb_free_security) (struct super_block *sb);
    1465                 :            :         int (*sb_copy_data) (char *orig, char *copy);
    1466                 :            :         int (*sb_remount) (struct super_block *sb, void *data);
    1467                 :            :         int (*sb_kern_mount) (struct super_block *sb, int flags, void *data);
    1468                 :            :         int (*sb_show_options) (struct seq_file *m, struct super_block *sb);
    1469                 :            :         int (*sb_statfs) (struct dentry *dentry);
    1470                 :            :         int (*sb_mount) (const char *dev_name, struct path *path,
    1471                 :            :                          const char *type, unsigned long flags, void *data);
    1472                 :            :         int (*sb_umount) (struct vfsmount *mnt, int flags);
    1473                 :            :         int (*sb_pivotroot) (struct path *old_path,
    1474                 :            :                              struct path *new_path);
    1475                 :            :         int (*sb_set_mnt_opts) (struct super_block *sb,
    1476                 :            :                                 struct security_mnt_opts *opts,
    1477                 :            :                                 unsigned long kern_flags,
    1478                 :            :                                 unsigned long *set_kern_flags);
    1479                 :            :         int (*sb_clone_mnt_opts) (const struct super_block *oldsb,
    1480                 :            :                                    struct super_block *newsb);
    1481                 :            :         int (*sb_parse_opts_str) (char *options, struct security_mnt_opts *opts);
    1482                 :            :         int (*dentry_init_security) (struct dentry *dentry, int mode,
    1483                 :            :                                         struct qstr *name, void **ctx,
    1484                 :            :                                         u32 *ctxlen);
    1485                 :            : 
    1486                 :            : 
    1487                 :            : #ifdef CONFIG_SECURITY_PATH
    1488                 :            :         int (*path_unlink) (struct path *dir, struct dentry *dentry);
    1489                 :            :         int (*path_mkdir) (struct path *dir, struct dentry *dentry, umode_t mode);
    1490                 :            :         int (*path_rmdir) (struct path *dir, struct dentry *dentry);
    1491                 :            :         int (*path_mknod) (struct path *dir, struct dentry *dentry, umode_t mode,
    1492                 :            :                            unsigned int dev);
    1493                 :            :         int (*path_truncate) (struct path *path);
    1494                 :            :         int (*path_symlink) (struct path *dir, struct dentry *dentry,
    1495                 :            :                              const char *old_name);
    1496                 :            :         int (*path_link) (struct dentry *old_dentry, struct path *new_dir,
    1497                 :            :                           struct dentry *new_dentry);
    1498                 :            :         int (*path_rename) (struct path *old_dir, struct dentry *old_dentry,
    1499                 :            :                             struct path *new_dir, struct dentry *new_dentry);
    1500                 :            :         int (*path_chmod) (struct path *path, umode_t mode);
    1501                 :            :         int (*path_chown) (struct path *path, kuid_t uid, kgid_t gid);
    1502                 :            :         int (*path_chroot) (struct path *path);
    1503                 :            : #endif
    1504                 :            : 
    1505                 :            :         int (*inode_alloc_security) (struct inode *inode);
    1506                 :            :         void (*inode_free_security) (struct inode *inode);
    1507                 :            :         int (*inode_init_security) (struct inode *inode, struct inode *dir,
    1508                 :            :                                     const struct qstr *qstr, const char **name,
    1509                 :            :                                     void **value, size_t *len);
    1510                 :            :         int (*inode_create) (struct inode *dir,
    1511                 :            :                              struct dentry *dentry, umode_t mode);
    1512                 :            :         int (*inode_link) (struct dentry *old_dentry,
    1513                 :            :                            struct inode *dir, struct dentry *new_dentry);
    1514                 :            :         int (*inode_unlink) (struct inode *dir, struct dentry *dentry);
    1515                 :            :         int (*inode_symlink) (struct inode *dir,
    1516                 :            :                               struct dentry *dentry, const char *old_name);
    1517                 :            :         int (*inode_mkdir) (struct inode *dir, struct dentry *dentry, umode_t mode);
    1518                 :            :         int (*inode_rmdir) (struct inode *dir, struct dentry *dentry);
    1519                 :            :         int (*inode_mknod) (struct inode *dir, struct dentry *dentry,
    1520                 :            :                             umode_t mode, dev_t dev);
    1521                 :            :         int (*inode_rename) (struct inode *old_dir, struct dentry *old_dentry,
    1522                 :            :                              struct inode *new_dir, struct dentry *new_dentry);
    1523                 :            :         int (*inode_readlink) (struct dentry *dentry);
    1524                 :            :         int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd);
    1525                 :            :         int (*inode_permission) (struct inode *inode, int mask);
    1526                 :            :         int (*inode_setattr)    (struct dentry *dentry, struct iattr *attr);
    1527                 :            :         int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry);
    1528                 :            :         int (*inode_setxattr) (struct dentry *dentry, const char *name,
    1529                 :            :                                const void *value, size_t size, int flags);
    1530                 :            :         void (*inode_post_setxattr) (struct dentry *dentry, const char *name,
    1531                 :            :                                      const void *value, size_t size, int flags);
    1532                 :            :         int (*inode_getxattr) (struct dentry *dentry, const char *name);
    1533                 :            :         int (*inode_listxattr) (struct dentry *dentry);
    1534                 :            :         int (*inode_removexattr) (struct dentry *dentry, const char *name);
    1535                 :            :         int (*inode_need_killpriv) (struct dentry *dentry);
    1536                 :            :         int (*inode_killpriv) (struct dentry *dentry);
    1537                 :            :         int (*inode_getsecurity) (const struct inode *inode, const char *name, void **buffer, bool alloc);
    1538                 :            :         int (*inode_setsecurity) (struct inode *inode, const char *name, const void *value, size_t size, int flags);
    1539                 :            :         int (*inode_listsecurity) (struct inode *inode, char *buffer, size_t buffer_size);
    1540                 :            :         void (*inode_getsecid) (const struct inode *inode, u32 *secid);
    1541                 :            : 
    1542                 :            :         int (*file_permission) (struct file *file, int mask);
    1543                 :            :         int (*file_alloc_security) (struct file *file);
    1544                 :            :         void (*file_free_security) (struct file *file);
    1545                 :            :         int (*file_ioctl) (struct file *file, unsigned int cmd,
    1546                 :            :                            unsigned long arg);
    1547                 :            :         int (*mmap_addr) (unsigned long addr);
    1548                 :            :         int (*mmap_file) (struct file *file,
    1549                 :            :                           unsigned long reqprot, unsigned long prot,
    1550                 :            :                           unsigned long flags);
    1551                 :            :         int (*file_mprotect) (struct vm_area_struct *vma,
    1552                 :            :                               unsigned long reqprot,
    1553                 :            :                               unsigned long prot);
    1554                 :            :         int (*file_lock) (struct file *file, unsigned int cmd);
    1555                 :            :         int (*file_fcntl) (struct file *file, unsigned int cmd,
    1556                 :            :                            unsigned long arg);
    1557                 :            :         int (*file_set_fowner) (struct file *file);
    1558                 :            :         int (*file_send_sigiotask) (struct task_struct *tsk,
    1559                 :            :                                     struct fown_struct *fown, int sig);
    1560                 :            :         int (*file_receive) (struct file *file);
    1561                 :            :         int (*file_open) (struct file *file, const struct cred *cred);
    1562                 :            : 
    1563                 :            :         int (*task_create) (unsigned long clone_flags);
    1564                 :            :         void (*task_free) (struct task_struct *task);
    1565                 :            :         int (*cred_alloc_blank) (struct cred *cred, gfp_t gfp);
    1566                 :            :         void (*cred_free) (struct cred *cred);
    1567                 :            :         int (*cred_prepare)(struct cred *new, const struct cred *old,
    1568                 :            :                             gfp_t gfp);
    1569                 :            :         void (*cred_transfer)(struct cred *new, const struct cred *old);
    1570                 :            :         int (*kernel_act_as)(struct cred *new, u32 secid);
    1571                 :            :         int (*kernel_create_files_as)(struct cred *new, struct inode *inode);
    1572                 :            :         int (*kernel_module_request)(char *kmod_name);
    1573                 :            :         int (*kernel_module_from_file)(struct file *file);
    1574                 :            :         int (*task_fix_setuid) (struct cred *new, const struct cred *old,
    1575                 :            :                                 int flags);
    1576                 :            :         int (*task_setpgid) (struct task_struct *p, pid_t pgid);
    1577                 :            :         int (*task_getpgid) (struct task_struct *p);
    1578                 :            :         int (*task_getsid) (struct task_struct *p);
    1579                 :            :         void (*task_getsecid) (struct task_struct *p, u32 *secid);
    1580                 :            :         int (*task_setnice) (struct task_struct *p, int nice);
    1581                 :            :         int (*task_setioprio) (struct task_struct *p, int ioprio);
    1582                 :            :         int (*task_getioprio) (struct task_struct *p);
    1583                 :            :         int (*task_setrlimit) (struct task_struct *p, unsigned int resource,
    1584                 :            :                         struct rlimit *new_rlim);
    1585                 :            :         int (*task_setscheduler) (struct task_struct *p);
    1586                 :            :         int (*task_getscheduler) (struct task_struct *p);
    1587                 :            :         int (*task_movememory) (struct task_struct *p);
    1588                 :            :         int (*task_kill) (struct task_struct *p,
    1589                 :            :                           struct siginfo *info, int sig, u32 secid);
    1590                 :            :         int (*task_wait) (struct task_struct *p);
    1591                 :            :         int (*task_prctl) (int option, unsigned long arg2,
    1592                 :            :                            unsigned long arg3, unsigned long arg4,
    1593                 :            :                            unsigned long arg5);
    1594                 :            :         void (*task_to_inode) (struct task_struct *p, struct inode *inode);
    1595                 :            : 
    1596                 :            :         int (*ipc_permission) (struct kern_ipc_perm *ipcp, short flag);
    1597                 :            :         void (*ipc_getsecid) (struct kern_ipc_perm *ipcp, u32 *secid);
    1598                 :            : 
    1599                 :            :         int (*msg_msg_alloc_security) (struct msg_msg *msg);
    1600                 :            :         void (*msg_msg_free_security) (struct msg_msg *msg);
    1601                 :            : 
    1602                 :            :         int (*msg_queue_alloc_security) (struct msg_queue *msq);
    1603                 :            :         void (*msg_queue_free_security) (struct msg_queue *msq);
    1604                 :            :         int (*msg_queue_associate) (struct msg_queue *msq, int msqflg);
    1605                 :            :         int (*msg_queue_msgctl) (struct msg_queue *msq, int cmd);
    1606                 :            :         int (*msg_queue_msgsnd) (struct msg_queue *msq,
    1607                 :            :                                  struct msg_msg *msg, int msqflg);
    1608                 :            :         int (*msg_queue_msgrcv) (struct msg_queue *msq,
    1609                 :            :                                  struct msg_msg *msg,
    1610                 :            :                                  struct task_struct *target,
    1611                 :            :                                  long type, int mode);
    1612                 :            : 
    1613                 :            :         int (*shm_alloc_security) (struct shmid_kernel *shp);
    1614                 :            :         void (*shm_free_security) (struct shmid_kernel *shp);
    1615                 :            :         int (*shm_associate) (struct shmid_kernel *shp, int shmflg);
    1616                 :            :         int (*shm_shmctl) (struct shmid_kernel *shp, int cmd);
    1617                 :            :         int (*shm_shmat) (struct shmid_kernel *shp,
    1618                 :            :                           char __user *shmaddr, int shmflg);
    1619                 :            : 
    1620                 :            :         int (*sem_alloc_security) (struct sem_array *sma);
    1621                 :            :         void (*sem_free_security) (struct sem_array *sma);
    1622                 :            :         int (*sem_associate) (struct sem_array *sma, int semflg);
    1623                 :            :         int (*sem_semctl) (struct sem_array *sma, int cmd);
    1624                 :            :         int (*sem_semop) (struct sem_array *sma,
    1625                 :            :                           struct sembuf *sops, unsigned nsops, int alter);
    1626                 :            : 
    1627                 :            :         int (*netlink_send) (struct sock *sk, struct sk_buff *skb);
    1628                 :            : 
    1629                 :            :         void (*d_instantiate) (struct dentry *dentry, struct inode *inode);
    1630                 :            : 
    1631                 :            :         int (*getprocattr) (struct task_struct *p, char *name, char **value);
    1632                 :            :         int (*setprocattr) (struct task_struct *p, char *name, void *value, size_t size);
    1633                 :            :         int (*ismaclabel) (const char *name);
    1634                 :            :         int (*secid_to_secctx) (u32 secid, char **secdata, u32 *seclen);
    1635                 :            :         int (*secctx_to_secid) (const char *secdata, u32 seclen, u32 *secid);
    1636                 :            :         void (*release_secctx) (char *secdata, u32 seclen);
    1637                 :            : 
    1638                 :            :         int (*inode_notifysecctx)(struct inode *inode, void *ctx, u32 ctxlen);
    1639                 :            :         int (*inode_setsecctx)(struct dentry *dentry, void *ctx, u32 ctxlen);
    1640                 :            :         int (*inode_getsecctx)(struct inode *inode, void **ctx, u32 *ctxlen);
    1641                 :            : 
    1642                 :            : #ifdef CONFIG_SECURITY_NETWORK
    1643                 :            :         int (*unix_stream_connect) (struct sock *sock, struct sock *other, struct sock *newsk);
    1644                 :            :         int (*unix_may_send) (struct socket *sock, struct socket *other);
    1645                 :            : 
    1646                 :            :         int (*socket_create) (int family, int type, int protocol, int kern);
    1647                 :            :         int (*socket_post_create) (struct socket *sock, int family,
    1648                 :            :                                    int type, int protocol, int kern);
    1649                 :            :         int (*socket_bind) (struct socket *sock,
    1650                 :            :                             struct sockaddr *address, int addrlen);
    1651                 :            :         int (*socket_connect) (struct socket *sock,
    1652                 :            :                                struct sockaddr *address, int addrlen);
    1653                 :            :         int (*socket_listen) (struct socket *sock, int backlog);
    1654                 :            :         int (*socket_accept) (struct socket *sock, struct socket *newsock);
    1655                 :            :         int (*socket_sendmsg) (struct socket *sock,
    1656                 :            :                                struct msghdr *msg, int size);
    1657                 :            :         int (*socket_recvmsg) (struct socket *sock,
    1658                 :            :                                struct msghdr *msg, int size, int flags);
    1659                 :            :         int (*socket_getsockname) (struct socket *sock);
    1660                 :            :         int (*socket_getpeername) (struct socket *sock);
    1661                 :            :         int (*socket_getsockopt) (struct socket *sock, int level, int optname);
    1662                 :            :         int (*socket_setsockopt) (struct socket *sock, int level, int optname);
    1663                 :            :         int (*socket_shutdown) (struct socket *sock, int how);
    1664                 :            :         int (*socket_sock_rcv_skb) (struct sock *sk, struct sk_buff *skb);
    1665                 :            :         int (*socket_getpeersec_stream) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len);
    1666                 :            :         int (*socket_getpeersec_dgram) (struct socket *sock, struct sk_buff *skb, u32 *secid);
    1667                 :            :         int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority);
    1668                 :            :         void (*sk_free_security) (struct sock *sk);
    1669                 :            :         void (*sk_clone_security) (const struct sock *sk, struct sock *newsk);
    1670                 :            :         void (*sk_getsecid) (struct sock *sk, u32 *secid);
    1671                 :            :         void (*sock_graft) (struct sock *sk, struct socket *parent);
    1672                 :            :         int (*inet_conn_request) (struct sock *sk, struct sk_buff *skb,
    1673                 :            :                                   struct request_sock *req);
    1674                 :            :         void (*inet_csk_clone) (struct sock *newsk, const struct request_sock *req);
    1675                 :            :         void (*inet_conn_established) (struct sock *sk, struct sk_buff *skb);
    1676                 :            :         int (*secmark_relabel_packet) (u32 secid);
    1677                 :            :         void (*secmark_refcount_inc) (void);
    1678                 :            :         void (*secmark_refcount_dec) (void);
    1679                 :            :         void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl);
    1680                 :            :         int (*tun_dev_alloc_security) (void **security);
    1681                 :            :         void (*tun_dev_free_security) (void *security);
    1682                 :            :         int (*tun_dev_create) (void);
    1683                 :            :         int (*tun_dev_attach_queue) (void *security);
    1684                 :            :         int (*tun_dev_attach) (struct sock *sk, void *security);
    1685                 :            :         int (*tun_dev_open) (void *security);
    1686                 :            :         void (*skb_owned_by) (struct sk_buff *skb, struct sock *sk);
    1687                 :            : #endif  /* CONFIG_SECURITY_NETWORK */
    1688                 :            : 
    1689                 :            : #ifdef CONFIG_SECURITY_NETWORK_XFRM
    1690                 :            :         int (*xfrm_policy_alloc_security) (struct xfrm_sec_ctx **ctxp,
    1691                 :            :                         struct xfrm_user_sec_ctx *sec_ctx);
    1692                 :            :         int (*xfrm_policy_clone_security) (struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctx);
    1693                 :            :         void (*xfrm_policy_free_security) (struct xfrm_sec_ctx *ctx);
    1694                 :            :         int (*xfrm_policy_delete_security) (struct xfrm_sec_ctx *ctx);
    1695                 :            :         int (*xfrm_state_alloc) (struct xfrm_state *x,
    1696                 :            :                                  struct xfrm_user_sec_ctx *sec_ctx);
    1697                 :            :         int (*xfrm_state_alloc_acquire) (struct xfrm_state *x,
    1698                 :            :                                          struct xfrm_sec_ctx *polsec,
    1699                 :            :                                          u32 secid);
    1700                 :            :         void (*xfrm_state_free_security) (struct xfrm_state *x);
    1701                 :            :         int (*xfrm_state_delete_security) (struct xfrm_state *x);
    1702                 :            :         int (*xfrm_policy_lookup) (struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
    1703                 :            :         int (*xfrm_state_pol_flow_match) (struct xfrm_state *x,
    1704                 :            :                                           struct xfrm_policy *xp,
    1705                 :            :                                           const struct flowi *fl);
    1706                 :            :         int (*xfrm_decode_session) (struct sk_buff *skb, u32 *secid, int ckall);
    1707                 :            : #endif  /* CONFIG_SECURITY_NETWORK_XFRM */
    1708                 :            : 
    1709                 :            :         /* key management security hooks */
    1710                 :            : #ifdef CONFIG_KEYS
    1711                 :            :         int (*key_alloc) (struct key *key, const struct cred *cred, unsigned long flags);
    1712                 :            :         void (*key_free) (struct key *key);
    1713                 :            :         int (*key_permission) (key_ref_t key_ref,
    1714                 :            :                                const struct cred *cred,
    1715                 :            :                                key_perm_t perm);
    1716                 :            :         int (*key_getsecurity)(struct key *key, char **_buffer);
    1717                 :            : #endif  /* CONFIG_KEYS */
    1718                 :            : 
    1719                 :            : #ifdef CONFIG_AUDIT
    1720                 :            :         int (*audit_rule_init) (u32 field, u32 op, char *rulestr, void **lsmrule);
    1721                 :            :         int (*audit_rule_known) (struct audit_krule *krule);
    1722                 :            :         int (*audit_rule_match) (u32 secid, u32 field, u32 op, void *lsmrule,
    1723                 :            :                                  struct audit_context *actx);
    1724                 :            :         void (*audit_rule_free) (void *lsmrule);
    1725                 :            : #endif /* CONFIG_AUDIT */
    1726                 :            : };
    1727                 :            : 
    1728                 :            : /* prototypes */
    1729                 :            : extern int security_init(void);
    1730                 :            : extern int security_module_enable(struct security_operations *ops);
    1731                 :            : extern int register_security(struct security_operations *ops);
    1732                 :            : extern void __init security_fixup_ops(struct security_operations *ops);
    1733                 :            : 
    1734                 :            : 
    1735                 :            : /* Security operations */
    1736                 :            : int security_binder_set_context_mgr(struct task_struct *mgr);
    1737                 :            : int security_binder_transaction(struct task_struct *from, struct task_struct *to);
    1738                 :            : int security_binder_transfer_binder(struct task_struct *from, struct task_struct *to);
    1739                 :            : int security_binder_transfer_file(struct task_struct *from, struct task_struct *to, struct file *file);
    1740                 :            : int security_ptrace_access_check(struct task_struct *child, unsigned int mode);
    1741                 :            : int security_ptrace_traceme(struct task_struct *parent);
    1742                 :            : int security_capget(struct task_struct *target,
    1743                 :            :                     kernel_cap_t *effective,
    1744                 :            :                     kernel_cap_t *inheritable,
    1745                 :            :                     kernel_cap_t *permitted);
    1746                 :            : int security_capset(struct cred *new, const struct cred *old,
    1747                 :            :                     const kernel_cap_t *effective,
    1748                 :            :                     const kernel_cap_t *inheritable,
    1749                 :            :                     const kernel_cap_t *permitted);
    1750                 :            : int security_capable(const struct cred *cred, struct user_namespace *ns,
    1751                 :            :                         int cap);
    1752                 :            : int security_capable_noaudit(const struct cred *cred, struct user_namespace *ns,
    1753                 :            :                              int cap);
    1754                 :            : int security_quotactl(int cmds, int type, int id, struct super_block *sb);
    1755                 :            : int security_quota_on(struct dentry *dentry);
    1756                 :            : int security_syslog(int type);
    1757                 :            : int security_settime(const struct timespec *ts, const struct timezone *tz);
    1758                 :            : int security_vm_enough_memory_mm(struct mm_struct *mm, long pages);
    1759                 :            : int security_bprm_set_creds(struct linux_binprm *bprm);
    1760                 :            : int security_bprm_check(struct linux_binprm *bprm);
    1761                 :            : void security_bprm_committing_creds(struct linux_binprm *bprm);
    1762                 :            : void security_bprm_committed_creds(struct linux_binprm *bprm);
    1763                 :            : int security_bprm_secureexec(struct linux_binprm *bprm);
    1764                 :            : int security_sb_alloc(struct super_block *sb);
    1765                 :            : void security_sb_free(struct super_block *sb);
    1766                 :            : int security_sb_copy_data(char *orig, char *copy);
    1767                 :            : int security_sb_remount(struct super_block *sb, void *data);
    1768                 :            : int security_sb_kern_mount(struct super_block *sb, int flags, void *data);
    1769                 :            : int security_sb_show_options(struct seq_file *m, struct super_block *sb);
    1770                 :            : int security_sb_statfs(struct dentry *dentry);
    1771                 :            : int security_sb_mount(const char *dev_name, struct path *path,
    1772                 :            :                       const char *type, unsigned long flags, void *data);
    1773                 :            : int security_sb_umount(struct vfsmount *mnt, int flags);
    1774                 :            : int security_sb_pivotroot(struct path *old_path, struct path *new_path);
    1775                 :            : int security_sb_set_mnt_opts(struct super_block *sb,
    1776                 :            :                                 struct security_mnt_opts *opts,
    1777                 :            :                                 unsigned long kern_flags,
    1778                 :            :                                 unsigned long *set_kern_flags);
    1779                 :            : int security_sb_clone_mnt_opts(const struct super_block *oldsb,
    1780                 :            :                                 struct super_block *newsb);
    1781                 :            : int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts);
    1782                 :            : int security_dentry_init_security(struct dentry *dentry, int mode,
    1783                 :            :                                         struct qstr *name, void **ctx,
    1784                 :            :                                         u32 *ctxlen);
    1785                 :            : 
    1786                 :            : int security_inode_alloc(struct inode *inode);
    1787                 :            : void security_inode_free(struct inode *inode);
    1788                 :            : int security_inode_init_security(struct inode *inode, struct inode *dir,
    1789                 :            :                                  const struct qstr *qstr,
    1790                 :            :                                  initxattrs initxattrs, void *fs_data);
    1791                 :            : int security_old_inode_init_security(struct inode *inode, struct inode *dir,
    1792                 :            :                                      const struct qstr *qstr, const char **name,
    1793                 :            :                                      void **value, size_t *len);
    1794                 :            : int security_inode_create(struct inode *dir, struct dentry *dentry, umode_t mode);
    1795                 :            : int security_inode_link(struct dentry *old_dentry, struct inode *dir,
    1796                 :            :                          struct dentry *new_dentry);
    1797                 :            : int security_inode_unlink(struct inode *dir, struct dentry *dentry);
    1798                 :            : int security_inode_symlink(struct inode *dir, struct dentry *dentry,
    1799                 :            :                            const char *old_name);
    1800                 :            : int security_inode_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
    1801                 :            : int security_inode_rmdir(struct inode *dir, struct dentry *dentry);
    1802                 :            : int security_inode_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev);
    1803                 :            : int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry,
    1804                 :            :                           struct inode *new_dir, struct dentry *new_dentry);
    1805                 :            : int security_inode_readlink(struct dentry *dentry);
    1806                 :            : int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd);
    1807                 :            : int security_inode_permission(struct inode *inode, int mask);
    1808                 :            : int security_inode_setattr(struct dentry *dentry, struct iattr *attr);
    1809                 :            : int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry);
    1810                 :            : int security_inode_setxattr(struct dentry *dentry, const char *name,
    1811                 :            :                             const void *value, size_t size, int flags);
    1812                 :            : void security_inode_post_setxattr(struct dentry *dentry, const char *name,
    1813                 :            :                                   const void *value, size_t size, int flags);
    1814                 :            : int security_inode_getxattr(struct dentry *dentry, const char *name);
    1815                 :            : int security_inode_listxattr(struct dentry *dentry);
    1816                 :            : int security_inode_removexattr(struct dentry *dentry, const char *name);
    1817                 :            : int security_inode_need_killpriv(struct dentry *dentry);
    1818                 :            : int security_inode_killpriv(struct dentry *dentry);
    1819                 :            : int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc);
    1820                 :            : int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags);
    1821                 :            : int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size);
    1822                 :            : void security_inode_getsecid(const struct inode *inode, u32 *secid);
    1823                 :            : int security_file_permission(struct file *file, int mask);
    1824                 :            : int security_file_alloc(struct file *file);
    1825                 :            : void security_file_free(struct file *file);
    1826                 :            : int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
    1827                 :            : int security_mmap_file(struct file *file, unsigned long prot,
    1828                 :            :                         unsigned long flags);
    1829                 :            : int security_mmap_addr(unsigned long addr);
    1830                 :            : int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
    1831                 :            :                            unsigned long prot);
    1832                 :            : int security_file_lock(struct file *file, unsigned int cmd);
    1833                 :            : int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg);
    1834                 :            : int security_file_set_fowner(struct file *file);
    1835                 :            : int security_file_send_sigiotask(struct task_struct *tsk,
    1836                 :            :                                  struct fown_struct *fown, int sig);
    1837                 :            : int security_file_receive(struct file *file);
    1838                 :            : int security_file_open(struct file *file, const struct cred *cred);
    1839                 :            : int security_task_create(unsigned long clone_flags);
    1840                 :            : void security_task_free(struct task_struct *task);
    1841                 :            : int security_cred_alloc_blank(struct cred *cred, gfp_t gfp);
    1842                 :            : void security_cred_free(struct cred *cred);
    1843                 :            : int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp);
    1844                 :            : void security_transfer_creds(struct cred *new, const struct cred *old);
    1845                 :            : int security_kernel_act_as(struct cred *new, u32 secid);
    1846                 :            : int security_kernel_create_files_as(struct cred *new, struct inode *inode);
    1847                 :            : int security_kernel_module_request(char *kmod_name);
    1848                 :            : int security_kernel_module_from_file(struct file *file);
    1849                 :            : int security_task_fix_setuid(struct cred *new, const struct cred *old,
    1850                 :            :                              int flags);
    1851                 :            : int security_task_setpgid(struct task_struct *p, pid_t pgid);
    1852                 :            : int security_task_getpgid(struct task_struct *p);
    1853                 :            : int security_task_getsid(struct task_struct *p);
    1854                 :            : void security_task_getsecid(struct task_struct *p, u32 *secid);
    1855                 :            : int security_task_setnice(struct task_struct *p, int nice);
    1856                 :            : int security_task_setioprio(struct task_struct *p, int ioprio);
    1857                 :            : int security_task_getioprio(struct task_struct *p);
    1858                 :            : int security_task_setrlimit(struct task_struct *p, unsigned int resource,
    1859                 :            :                 struct rlimit *new_rlim);
    1860                 :            : int security_task_setscheduler(struct task_struct *p);
    1861                 :            : int security_task_getscheduler(struct task_struct *p);
    1862                 :            : int security_task_movememory(struct task_struct *p);
    1863                 :            : int security_task_kill(struct task_struct *p, struct siginfo *info,
    1864                 :            :                         int sig, u32 secid);
    1865                 :            : int security_task_wait(struct task_struct *p);
    1866                 :            : int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
    1867                 :            :                         unsigned long arg4, unsigned long arg5);
    1868                 :            : void security_task_to_inode(struct task_struct *p, struct inode *inode);
    1869                 :            : int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag);
    1870                 :            : void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid);
    1871                 :            : int security_msg_msg_alloc(struct msg_msg *msg);
    1872                 :            : void security_msg_msg_free(struct msg_msg *msg);
    1873                 :            : int security_msg_queue_alloc(struct msg_queue *msq);
    1874                 :            : void security_msg_queue_free(struct msg_queue *msq);
    1875                 :            : int security_msg_queue_associate(struct msg_queue *msq, int msqflg);
    1876                 :            : int security_msg_queue_msgctl(struct msg_queue *msq, int cmd);
    1877                 :            : int security_msg_queue_msgsnd(struct msg_queue *msq,
    1878                 :            :                               struct msg_msg *msg, int msqflg);
    1879                 :            : int security_msg_queue_msgrcv(struct msg_queue *msq, struct msg_msg *msg,
    1880                 :            :                               struct task_struct *target, long type, int mode);
    1881                 :            : int security_shm_alloc(struct shmid_kernel *shp);
    1882                 :            : void security_shm_free(struct shmid_kernel *shp);
    1883                 :            : int security_shm_associate(struct shmid_kernel *shp, int shmflg);
    1884                 :            : int security_shm_shmctl(struct shmid_kernel *shp, int cmd);
    1885                 :            : int security_shm_shmat(struct shmid_kernel *shp, char __user *shmaddr, int shmflg);
    1886                 :            : int security_sem_alloc(struct sem_array *sma);
    1887                 :            : void security_sem_free(struct sem_array *sma);
    1888                 :            : int security_sem_associate(struct sem_array *sma, int semflg);
    1889                 :            : int security_sem_semctl(struct sem_array *sma, int cmd);
    1890                 :            : int security_sem_semop(struct sem_array *sma, struct sembuf *sops,
    1891                 :            :                         unsigned nsops, int alter);
    1892                 :            : void security_d_instantiate(struct dentry *dentry, struct inode *inode);
    1893                 :            : int security_getprocattr(struct task_struct *p, char *name, char **value);
    1894                 :            : int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size);
    1895                 :            : int security_netlink_send(struct sock *sk, struct sk_buff *skb);
    1896                 :            : int security_ismaclabel(const char *name);
    1897                 :            : int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen);
    1898                 :            : int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid);
    1899                 :            : void security_release_secctx(char *secdata, u32 seclen);
    1900                 :            : 
    1901                 :            : int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen);
    1902                 :            : int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen);
    1903                 :            : int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen);
    1904                 :            : #else /* CONFIG_SECURITY */
    1905                 :            : struct security_mnt_opts {
    1906                 :            : };
    1907                 :            : 
    1908                 :            : static inline void security_init_mnt_opts(struct security_mnt_opts *opts)
    1909                 :            : {
    1910                 :            : }
    1911                 :            : 
    1912                 :            : static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
    1913                 :            : {
    1914                 :            : }
    1915                 :            : 
    1916                 :            : /*
    1917                 :            :  * This is the default capabilities functionality.  Most of these functions
    1918                 :            :  * are just stubbed out, but a few must call the proper capable code.
    1919                 :            :  */
    1920                 :            : 
    1921                 :            : static inline int security_init(void)
    1922                 :            : {
    1923                 :            :         return 0;
    1924                 :            : }
    1925                 :            : 
    1926                 :            : static inline int security_binder_set_context_mgr(struct task_struct *mgr)
    1927                 :            : {
    1928                 :            :         return 0;
    1929                 :            : }
    1930                 :            : 
    1931                 :            : static inline int security_binder_transaction(struct task_struct *from, struct task_struct *to)
    1932                 :            : {
    1933                 :            :         return 0;
    1934                 :            : }
    1935                 :            : 
    1936                 :            : static inline int security_binder_transfer_binder(struct task_struct *from, struct task_struct *to)
    1937                 :            : {
    1938                 :            :         return 0;
    1939                 :            : }
    1940                 :            : 
    1941                 :            : static inline int security_binder_transfer_file(struct task_struct *from, struct task_struct *to, struct file *file)
    1942                 :            : {
    1943                 :            :         return 0;
    1944                 :            : }
    1945                 :            : 
    1946                 :            : static inline int security_ptrace_access_check(struct task_struct *child,
    1947                 :            :                                              unsigned int mode)
    1948                 :            : {
    1949                 :            :         return cap_ptrace_access_check(child, mode);
    1950                 :            : }
    1951                 :            : 
    1952                 :            : static inline int security_ptrace_traceme(struct task_struct *parent)
    1953                 :            : {
    1954                 :            :         return cap_ptrace_traceme(parent);
    1955                 :            : }
    1956                 :            : 
    1957                 :            : static inline int security_capget(struct task_struct *target,
    1958                 :            :                                    kernel_cap_t *effective,
    1959                 :            :                                    kernel_cap_t *inheritable,
    1960                 :            :                                    kernel_cap_t *permitted)
    1961                 :            : {
    1962                 :            :         return cap_capget(target, effective, inheritable, permitted);
    1963                 :            : }
    1964                 :            : 
    1965                 :            : static inline int security_capset(struct cred *new,
    1966                 :            :                                    const struct cred *old,
    1967                 :            :                                    const kernel_cap_t *effective,
    1968                 :            :                                    const kernel_cap_t *inheritable,
    1969                 :            :                                    const kernel_cap_t *permitted)
    1970                 :            : {
    1971                 :            :         return cap_capset(new, old, effective, inheritable, permitted);
    1972                 :            : }
    1973                 :            : 
    1974                 :            : static inline int security_capable(const struct cred *cred,
    1975                 :            :                                    struct user_namespace *ns, int cap)
    1976                 :            : {
    1977                 :            :         return cap_capable(cred, ns, cap, SECURITY_CAP_AUDIT);
    1978                 :            : }
    1979                 :            : 
    1980                 :            : static inline int security_capable_noaudit(const struct cred *cred,
    1981                 :            :                                            struct user_namespace *ns, int cap) {
    1982                 :            :         return cap_capable(cred, ns, cap, SECURITY_CAP_NOAUDIT);
    1983                 :            : }
    1984                 :            : 
    1985                 :            : static inline int security_quotactl(int cmds, int type, int id,
    1986                 :            :                                      struct super_block *sb)
    1987                 :            : {
    1988                 :            :         return 0;
    1989                 :            : }
    1990                 :            : 
    1991                 :            : static inline int security_quota_on(struct dentry *dentry)
    1992                 :            : {
    1993                 :            :         return 0;
    1994                 :            : }
    1995                 :            : 
    1996                 :            : static inline int security_syslog(int type)
    1997                 :            : {
    1998                 :            :         return 0;
    1999                 :            : }
    2000                 :            : 
    2001                 :            : static inline int security_settime(const struct timespec *ts,
    2002                 :            :                                    const struct timezone *tz)
    2003                 :            : {
    2004                 :            :         return cap_settime(ts, tz);
    2005                 :            : }
    2006                 :            : 
    2007                 :            : static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
    2008                 :            : {
    2009                 :            :         return cap_vm_enough_memory(mm, pages);
    2010                 :            : }
    2011                 :            : 
    2012                 :            : static inline int security_bprm_set_creds(struct linux_binprm *bprm)
    2013                 :            : {
    2014                 :            :         return cap_bprm_set_creds(bprm);
    2015                 :            : }
    2016                 :            : 
    2017                 :            : static inline int security_bprm_check(struct linux_binprm *bprm)
    2018                 :            : {
    2019                 :            :         return 0;
    2020                 :            : }
    2021                 :            : 
    2022                 :            : static inline void security_bprm_committing_creds(struct linux_binprm *bprm)
    2023                 :            : {
    2024                 :            : }
    2025                 :            : 
    2026                 :            : static inline void security_bprm_committed_creds(struct linux_binprm *bprm)
    2027                 :            : {
    2028                 :            : }
    2029                 :            : 
    2030                 :            : static inline int security_bprm_secureexec(struct linux_binprm *bprm)
    2031                 :            : {
    2032                 :            :         return cap_bprm_secureexec(bprm);
    2033                 :            : }
    2034                 :            : 
    2035                 :            : static inline int security_sb_alloc(struct super_block *sb)
    2036                 :            : {
    2037                 :            :         return 0;
    2038                 :            : }
    2039                 :            : 
    2040                 :            : static inline void security_sb_free(struct super_block *sb)
    2041                 :            : { }
    2042                 :            : 
    2043                 :            : static inline int security_sb_copy_data(char *orig, char *copy)
    2044                 :            : {
    2045                 :            :         return 0;
    2046                 :            : }
    2047                 :            : 
    2048                 :            : static inline int security_sb_remount(struct super_block *sb, void *data)
    2049                 :            : {
    2050                 :            :         return 0;
    2051                 :            : }
    2052                 :            : 
    2053                 :            : static inline int security_sb_kern_mount(struct super_block *sb, int flags, void *data)
    2054                 :            : {
    2055                 :            :         return 0;
    2056                 :            : }
    2057                 :            : 
    2058                 :            : static inline int security_sb_show_options(struct seq_file *m,
    2059                 :            :                                            struct super_block *sb)
    2060                 :            : {
    2061                 :            :         return 0;
    2062                 :            : }
    2063                 :            : 
    2064                 :            : static inline int security_sb_statfs(struct dentry *dentry)
    2065                 :            : {
    2066                 :            :         return 0;
    2067                 :            : }
    2068                 :            : 
    2069                 :            : static inline int security_sb_mount(const char *dev_name, struct path *path,
    2070                 :            :                                     const char *type, unsigned long flags,
    2071                 :            :                                     void *data)
    2072                 :            : {
    2073                 :            :         return 0;
    2074                 :            : }
    2075                 :            : 
    2076                 :            : static inline int security_sb_umount(struct vfsmount *mnt, int flags)
    2077                 :            : {
    2078                 :            :         return 0;
    2079                 :            : }
    2080                 :            : 
    2081                 :            : static inline int security_sb_pivotroot(struct path *old_path,
    2082                 :            :                                         struct path *new_path)
    2083                 :            : {
    2084                 :            :         return 0;
    2085                 :            : }
    2086                 :            : 
    2087                 :            : static inline int security_sb_set_mnt_opts(struct super_block *sb,
    2088                 :            :                                            struct security_mnt_opts *opts,
    2089                 :            :                                            unsigned long kern_flags,
    2090                 :            :                                            unsigned long *set_kern_flags)
    2091                 :            : {
    2092                 :            :         return 0;
    2093                 :            : }
    2094                 :            : 
    2095                 :            : static inline int security_sb_clone_mnt_opts(const struct super_block *oldsb,
    2096                 :            :                                               struct super_block *newsb)
    2097                 :            : {
    2098                 :            :         return 0;
    2099                 :            : }
    2100                 :            : 
    2101                 :            : static inline int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts)
    2102                 :            : {
    2103                 :            :         return 0;
    2104                 :            : }
    2105                 :            : 
    2106                 :            : static inline int security_inode_alloc(struct inode *inode)
    2107                 :            : {
    2108                 :            :         return 0;
    2109                 :            : }
    2110                 :            : 
    2111                 :            : static inline void security_inode_free(struct inode *inode)
    2112                 :            : { }
    2113                 :            : 
    2114                 :            : static inline int security_dentry_init_security(struct dentry *dentry,
    2115                 :            :                                                  int mode,
    2116                 :            :                                                  struct qstr *name,
    2117                 :            :                                                  void **ctx,
    2118                 :            :                                                  u32 *ctxlen)
    2119                 :            : {
    2120                 :            :         return -EOPNOTSUPP;
    2121                 :            : }
    2122                 :            : 
    2123                 :            : 
    2124                 :            : static inline int security_inode_init_security(struct inode *inode,
    2125                 :            :                                                 struct inode *dir,
    2126                 :            :                                                 const struct qstr *qstr,
    2127                 :            :                                                 const initxattrs initxattrs,
    2128                 :            :                                                 void *fs_data)
    2129                 :            : {
    2130                 :            :         return 0;
    2131                 :            : }
    2132                 :            : 
    2133                 :            : static inline int security_old_inode_init_security(struct inode *inode,
    2134                 :            :                                                    struct inode *dir,
    2135                 :            :                                                    const struct qstr *qstr,
    2136                 :            :                                                    const char **name,
    2137                 :            :                                                    void **value, size_t *len)
    2138                 :            : {
    2139                 :            :         return -EOPNOTSUPP;
    2140                 :            : }
    2141                 :            : 
    2142                 :            : static inline int security_inode_create(struct inode *dir,
    2143                 :            :                                          struct dentry *dentry,
    2144                 :            :                                          umode_t mode)
    2145                 :            : {
    2146                 :            :         return 0;
    2147                 :            : }
    2148                 :            : 
    2149                 :            : static inline int security_inode_link(struct dentry *old_dentry,
    2150                 :            :                                        struct inode *dir,
    2151                 :            :                                        struct dentry *new_dentry)
    2152                 :            : {
    2153                 :            :         return 0;
    2154                 :            : }
    2155                 :            : 
    2156                 :            : static inline int security_inode_unlink(struct inode *dir,
    2157                 :            :                                          struct dentry *dentry)
    2158                 :            : {
    2159                 :            :         return 0;
    2160                 :            : }
    2161                 :            : 
    2162                 :            : static inline int security_inode_symlink(struct inode *dir,
    2163                 :            :                                           struct dentry *dentry,
    2164                 :            :                                           const char *old_name)
    2165                 :            : {
    2166                 :            :         return 0;
    2167                 :            : }
    2168                 :            : 
    2169                 :            : static inline int security_inode_mkdir(struct inode *dir,
    2170                 :            :                                         struct dentry *dentry,
    2171                 :            :                                         int mode)
    2172                 :            : {
    2173                 :            :         return 0;
    2174                 :            : }
    2175                 :            : 
    2176                 :            : static inline int security_inode_rmdir(struct inode *dir,
    2177                 :            :                                         struct dentry *dentry)
    2178                 :            : {
    2179                 :            :         return 0;
    2180                 :            : }
    2181                 :            : 
    2182                 :            : static inline int security_inode_mknod(struct inode *dir,
    2183                 :            :                                         struct dentry *dentry,
    2184                 :            :                                         int mode, dev_t dev)
    2185                 :            : {
    2186                 :            :         return 0;
    2187                 :            : }
    2188                 :            : 
    2189                 :            : static inline int security_inode_rename(struct inode *old_dir,
    2190                 :            :                                          struct dentry *old_dentry,
    2191                 :            :                                          struct inode *new_dir,
    2192                 :            :                                          struct dentry *new_dentry)
    2193                 :            : {
    2194                 :            :         return 0;
    2195                 :            : }
    2196                 :            : 
    2197                 :            : static inline int security_inode_readlink(struct dentry *dentry)
    2198                 :            : {
    2199                 :            :         return 0;
    2200                 :            : }
    2201                 :            : 
    2202                 :            : static inline int security_inode_follow_link(struct dentry *dentry,
    2203                 :            :                                               struct nameidata *nd)
    2204                 :            : {
    2205                 :            :         return 0;
    2206                 :            : }
    2207                 :            : 
    2208                 :            : static inline int security_inode_permission(struct inode *inode, int mask)
    2209                 :            : {
    2210                 :            :         return 0;
    2211                 :            : }
    2212                 :            : 
    2213                 :            : static inline int security_inode_setattr(struct dentry *dentry,
    2214                 :            :                                           struct iattr *attr)
    2215                 :            : {
    2216                 :            :         return 0;
    2217                 :            : }
    2218                 :            : 
    2219                 :            : static inline int security_inode_getattr(struct vfsmount *mnt,
    2220                 :            :                                           struct dentry *dentry)
    2221                 :            : {
    2222                 :            :         return 0;
    2223                 :            : }
    2224                 :            : 
    2225                 :            : static inline int security_inode_setxattr(struct dentry *dentry,
    2226                 :            :                 const char *name, const void *value, size_t size, int flags)
    2227                 :            : {
    2228                 :            :         return cap_inode_setxattr(dentry, name, value, size, flags);
    2229                 :            : }
    2230                 :            : 
    2231                 :            : static inline void security_inode_post_setxattr(struct dentry *dentry,
    2232                 :            :                 const char *name, const void *value, size_t size, int flags)
    2233                 :            : { }
    2234                 :            : 
    2235                 :            : static inline int security_inode_getxattr(struct dentry *dentry,
    2236                 :            :                         const char *name)
    2237                 :            : {
    2238                 :            :         return 0;
    2239                 :            : }
    2240                 :            : 
    2241                 :            : static inline int security_inode_listxattr(struct dentry *dentry)
    2242                 :            : {
    2243                 :            :         return 0;
    2244                 :            : }
    2245                 :            : 
    2246                 :            : static inline int security_inode_removexattr(struct dentry *dentry,
    2247                 :            :                         const char *name)
    2248                 :            : {
    2249                 :            :         return cap_inode_removexattr(dentry, name);
    2250                 :            : }
    2251                 :            : 
    2252                 :            : static inline int security_inode_need_killpriv(struct dentry *dentry)
    2253                 :            : {
    2254                 :            :         return cap_inode_need_killpriv(dentry);
    2255                 :            : }
    2256                 :            : 
    2257                 :            : static inline int security_inode_killpriv(struct dentry *dentry)
    2258                 :            : {
    2259                 :            :         return cap_inode_killpriv(dentry);
    2260                 :            : }
    2261                 :            : 
    2262                 :            : static inline int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc)
    2263                 :            : {
    2264                 :            :         return -EOPNOTSUPP;
    2265                 :            : }
    2266                 :            : 
    2267                 :            : static inline int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
    2268                 :            : {
    2269                 :            :         return -EOPNOTSUPP;
    2270                 :            : }
    2271                 :            : 
    2272                 :            : static inline int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size)
    2273                 :            : {
    2274                 :            :         return 0;
    2275                 :            : }
    2276                 :            : 
    2277                 :            : static inline void security_inode_getsecid(const struct inode *inode, u32 *secid)
    2278                 :            : {
    2279                 :            :         *secid = 0;
    2280                 :            : }
    2281                 :            : 
    2282                 :            : static inline int security_file_permission(struct file *file, int mask)
    2283                 :            : {
    2284                 :            :         return 0;
    2285                 :            : }
    2286                 :            : 
    2287                 :            : static inline int security_file_alloc(struct file *file)
    2288                 :            : {
    2289                 :            :         return 0;
    2290                 :            : }
    2291                 :            : 
    2292                 :            : static inline void security_file_free(struct file *file)
    2293                 :            : { }
    2294                 :            : 
    2295                 :            : static inline int security_file_ioctl(struct file *file, unsigned int cmd,
    2296                 :            :                                       unsigned long arg)
    2297                 :            : {
    2298                 :            :         return 0;
    2299                 :            : }
    2300                 :            : 
    2301                 :            : static inline int security_mmap_file(struct file *file, unsigned long prot,
    2302                 :            :                                      unsigned long flags)
    2303                 :            : {
    2304                 :            :         return 0;
    2305                 :            : }
    2306                 :            : 
    2307                 :            : static inline int security_mmap_addr(unsigned long addr)
    2308                 :            : {
    2309                 :            :         return cap_mmap_addr(addr);
    2310                 :            : }
    2311                 :            : 
    2312                 :            : static inline int security_file_mprotect(struct vm_area_struct *vma,
    2313                 :            :                                          unsigned long reqprot,
    2314                 :            :                                          unsigned long prot)
    2315                 :            : {
    2316                 :            :         return 0;
    2317                 :            : }
    2318                 :            : 
    2319                 :            : static inline int security_file_lock(struct file *file, unsigned int cmd)
    2320                 :            : {
    2321                 :            :         return 0;
    2322                 :            : }
    2323                 :            : 
    2324                 :            : static inline int security_file_fcntl(struct file *file, unsigned int cmd,
    2325                 :            :                                       unsigned long arg)
    2326                 :            : {
    2327                 :            :         return 0;
    2328                 :            : }
    2329                 :            : 
    2330                 :            : static inline int security_file_set_fowner(struct file *file)
    2331                 :            : {
    2332                 :            :         return 0;
    2333                 :            : }
    2334                 :            : 
    2335                 :            : static inline int security_file_send_sigiotask(struct task_struct *tsk,
    2336                 :            :                                                struct fown_struct *fown,
    2337                 :            :                                                int sig)
    2338                 :            : {
    2339                 :            :         return 0;
    2340                 :            : }
    2341                 :            : 
    2342                 :            : static inline int security_file_receive(struct file *file)
    2343                 :            : {
    2344                 :            :         return 0;
    2345                 :            : }
    2346                 :            : 
    2347                 :            : static inline int security_file_open(struct file *file,
    2348                 :            :                                      const struct cred *cred)
    2349                 :            : {
    2350                 :            :         return 0;
    2351                 :            : }
    2352                 :            : 
    2353                 :            : static inline int security_task_create(unsigned long clone_flags)
    2354                 :            : {
    2355                 :            :         return 0;
    2356                 :            : }
    2357                 :            : 
    2358                 :            : static inline void security_task_free(struct task_struct *task)
    2359                 :            : { }
    2360                 :            : 
    2361                 :            : static inline int security_cred_alloc_blank(struct cred *cred, gfp_t gfp)
    2362                 :            : {
    2363                 :            :         return 0;
    2364                 :            : }
    2365                 :            : 
    2366                 :            : static inline void security_cred_free(struct cred *cred)
    2367                 :            : { }
    2368                 :            : 
    2369                 :            : static inline int security_prepare_creds(struct cred *new,
    2370                 :            :                                          const struct cred *old,
    2371                 :            :                                          gfp_t gfp)
    2372                 :            : {
    2373                 :            :         return 0;
    2374                 :            : }
    2375                 :            : 
    2376                 :            : static inline void security_transfer_creds(struct cred *new,
    2377                 :            :                                            const struct cred *old)
    2378                 :            : {
    2379                 :            : }
    2380                 :            : 
    2381                 :            : static inline int security_kernel_act_as(struct cred *cred, u32 secid)
    2382                 :            : {
    2383                 :            :         return 0;
    2384                 :            : }
    2385                 :            : 
    2386                 :            : static inline int security_kernel_create_files_as(struct cred *cred,
    2387                 :            :                                                   struct inode *inode)
    2388                 :            : {
    2389                 :            :         return 0;
    2390                 :            : }
    2391                 :            : 
    2392                 :            : static inline int security_kernel_module_request(char *kmod_name)
    2393                 :            : {
    2394                 :            :         return 0;
    2395                 :            : }
    2396                 :            : 
    2397                 :            : static inline int security_kernel_module_from_file(struct file *file)
    2398                 :            : {
    2399                 :            :         return 0;
    2400                 :            : }
    2401                 :            : 
    2402                 :            : static inline int security_task_fix_setuid(struct cred *new,
    2403                 :            :                                            const struct cred *old,
    2404                 :            :                                            int flags)
    2405                 :            : {
    2406                 :            :         return cap_task_fix_setuid(new, old, flags);
    2407                 :            : }
    2408                 :            : 
    2409                 :            : static inline int security_task_setpgid(struct task_struct *p, pid_t pgid)
    2410                 :            : {
    2411                 :            :         return 0;
    2412                 :            : }
    2413                 :            : 
    2414                 :            : static inline int security_task_getpgid(struct task_struct *p)
    2415                 :            : {
    2416                 :            :         return 0;
    2417                 :            : }
    2418                 :            : 
    2419                 :            : static inline int security_task_getsid(struct task_struct *p)
    2420                 :            : {
    2421                 :            :         return 0;
    2422                 :            : }
    2423                 :            : 
    2424                 :            : static inline void security_task_getsecid(struct task_struct *p, u32 *secid)
    2425                 :            : {
    2426                 :            :         *secid = 0;
    2427                 :            : }
    2428                 :            : 
    2429                 :            : static inline int security_task_setnice(struct task_struct *p, int nice)
    2430                 :            : {
    2431                 :            :         return cap_task_setnice(p, nice);
    2432                 :            : }
    2433                 :            : 
    2434                 :            : static inline int security_task_setioprio(struct task_struct *p, int ioprio)
    2435                 :            : {
    2436                 :            :         return cap_task_setioprio(p, ioprio);
    2437                 :            : }
    2438                 :            : 
    2439                 :            : static inline int security_task_getioprio(struct task_struct *p)
    2440                 :            : {
    2441                 :            :         return 0;
    2442                 :            : }
    2443                 :            : 
    2444                 :            : static inline int security_task_setrlimit(struct task_struct *p,
    2445                 :            :                                           unsigned int resource,
    2446                 :            :                                           struct rlimit *new_rlim)
    2447                 :            : {
    2448                 :            :         return 0;
    2449                 :            : }
    2450                 :            : 
    2451                 :            : static inline int security_task_setscheduler(struct task_struct *p)
    2452                 :            : {
    2453                 :            :         return cap_task_setscheduler(p);
    2454                 :            : }
    2455                 :            : 
    2456                 :            : static inline int security_task_getscheduler(struct task_struct *p)
    2457                 :            : {
    2458                 :            :         return 0;
    2459                 :            : }
    2460                 :            : 
    2461                 :            : static inline int security_task_movememory(struct task_struct *p)
    2462                 :            : {
    2463                 :            :         return 0;
    2464                 :            : }
    2465                 :            : 
    2466                 :            : static inline int security_task_kill(struct task_struct *p,
    2467                 :            :                                      struct siginfo *info, int sig,
    2468                 :            :                                      u32 secid)
    2469                 :            : {
    2470                 :            :         return 0;
    2471                 :            : }
    2472                 :            : 
    2473                 :            : static inline int security_task_wait(struct task_struct *p)
    2474                 :            : {
    2475                 :            :         return 0;
    2476                 :            : }
    2477                 :            : 
    2478                 :            : static inline int security_task_prctl(int option, unsigned long arg2,
    2479                 :            :                                       unsigned long arg3,
    2480                 :            :                                       unsigned long arg4,
    2481                 :            :                                       unsigned long arg5)
    2482                 :            : {
    2483                 :            :         return cap_task_prctl(option, arg2, arg3, arg3, arg5);
    2484                 :            : }
    2485                 :            : 
    2486                 :            : static inline void security_task_to_inode(struct task_struct *p, struct inode *inode)
    2487                 :            : { }
    2488                 :            : 
    2489                 :            : static inline int security_ipc_permission(struct kern_ipc_perm *ipcp,
    2490                 :            :                                           short flag)
    2491                 :            : {
    2492                 :            :         return 0;
    2493                 :            : }
    2494                 :            : 
    2495                 :            : static inline void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid)
    2496                 :            : {
    2497                 :            :         *secid = 0;
    2498                 :            : }
    2499                 :            : 
    2500                 :            : static inline int security_msg_msg_alloc(struct msg_msg *msg)
    2501                 :            : {
    2502                 :            :         return 0;
    2503                 :            : }
    2504                 :            : 
    2505                 :            : static inline void security_msg_msg_free(struct msg_msg *msg)
    2506                 :            : { }
    2507                 :            : 
    2508                 :            : static inline int security_msg_queue_alloc(struct msg_queue *msq)
    2509                 :            : {
    2510                 :            :         return 0;
    2511                 :            : }
    2512                 :            : 
    2513                 :            : static inline void security_msg_queue_free(struct msg_queue *msq)
    2514                 :            : { }
    2515                 :            : 
    2516                 :            : static inline int security_msg_queue_associate(struct msg_queue *msq,
    2517                 :            :                                                int msqflg)
    2518                 :            : {
    2519                 :            :         return 0;
    2520                 :            : }
    2521                 :            : 
    2522                 :            : static inline int security_msg_queue_msgctl(struct msg_queue *msq, int cmd)
    2523                 :            : {
    2524                 :            :         return 0;
    2525                 :            : }
    2526                 :            : 
    2527                 :            : static inline int security_msg_queue_msgsnd(struct msg_queue *msq,
    2528                 :            :                                             struct msg_msg *msg, int msqflg)
    2529                 :            : {
    2530                 :            :         return 0;
    2531                 :            : }
    2532                 :            : 
    2533                 :            : static inline int security_msg_queue_msgrcv(struct msg_queue *msq,
    2534                 :            :                                             struct msg_msg *msg,
    2535                 :            :                                             struct task_struct *target,
    2536                 :            :                                             long type, int mode)
    2537                 :            : {
    2538                 :            :         return 0;
    2539                 :            : }
    2540                 :            : 
    2541                 :            : static inline int security_shm_alloc(struct shmid_kernel *shp)
    2542                 :            : {
    2543                 :            :         return 0;
    2544                 :            : }
    2545                 :            : 
    2546                 :            : static inline void security_shm_free(struct shmid_kernel *shp)
    2547                 :            : { }
    2548                 :            : 
    2549                 :            : static inline int security_shm_associate(struct shmid_kernel *shp,
    2550                 :            :                                          int shmflg)
    2551                 :            : {
    2552                 :            :         return 0;
    2553                 :            : }
    2554                 :            : 
    2555                 :            : static inline int security_shm_shmctl(struct shmid_kernel *shp, int cmd)
    2556                 :            : {
    2557                 :            :         return 0;
    2558                 :            : }
    2559                 :            : 
    2560                 :            : static inline int security_shm_shmat(struct shmid_kernel *shp,
    2561                 :            :                                      char __user *shmaddr, int shmflg)
    2562                 :            : {
    2563                 :            :         return 0;
    2564                 :            : }
    2565                 :            : 
    2566                 :            : static inline int security_sem_alloc(struct sem_array *sma)
    2567                 :            : {
    2568                 :            :         return 0;
    2569                 :            : }
    2570                 :            : 
    2571                 :            : static inline void security_sem_free(struct sem_array *sma)
    2572                 :            : { }
    2573                 :            : 
    2574                 :            : static inline int security_sem_associate(struct sem_array *sma, int semflg)
    2575                 :            : {
    2576                 :            :         return 0;
    2577                 :            : }
    2578                 :            : 
    2579                 :            : static inline int security_sem_semctl(struct sem_array *sma, int cmd)
    2580                 :            : {
    2581                 :            :         return 0;
    2582                 :            : }
    2583                 :            : 
    2584                 :            : static inline int security_sem_semop(struct sem_array *sma,
    2585                 :            :                                      struct sembuf *sops, unsigned nsops,
    2586                 :            :                                      int alter)
    2587                 :            : {
    2588                 :            :         return 0;
    2589                 :            : }
    2590                 :            : 
    2591                 :            : static inline void security_d_instantiate(struct dentry *dentry, struct inode *inode)
    2592                 :            : { }
    2593                 :            : 
    2594                 :            : static inline int security_getprocattr(struct task_struct *p, char *name, char **value)
    2595                 :            : {
    2596                 :            :         return -EINVAL;
    2597                 :            : }
    2598                 :            : 
    2599                 :            : static inline int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size)
    2600                 :            : {
    2601                 :            :         return -EINVAL;
    2602                 :            : }
    2603                 :            : 
    2604                 :            : static inline int security_netlink_send(struct sock *sk, struct sk_buff *skb)
    2605                 :            : {
    2606                 :            :         return cap_netlink_send(sk, skb);
    2607                 :            : }
    2608                 :            : 
    2609                 :            : static inline int security_ismaclabel(const char *name)
    2610                 :            : {
    2611                 :            :         return 0;
    2612                 :            : }
    2613                 :            : 
    2614                 :            : static inline int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
    2615                 :            : {
    2616                 :            :         return -EOPNOTSUPP;
    2617                 :            : }
    2618                 :            : 
    2619                 :            : static inline int security_secctx_to_secid(const char *secdata,
    2620                 :            :                                            u32 seclen,
    2621                 :            :                                            u32 *secid)
    2622                 :            : {
    2623                 :            :         return -EOPNOTSUPP;
    2624                 :            : }
    2625                 :            : 
    2626                 :            : static inline void security_release_secctx(char *secdata, u32 seclen)
    2627                 :            : {
    2628                 :            : }
    2629                 :            : 
    2630                 :            : static inline int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen)
    2631                 :            : {
    2632                 :            :         return -EOPNOTSUPP;
    2633                 :            : }
    2634                 :            : static inline int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen)
    2635                 :            : {
    2636                 :            :         return -EOPNOTSUPP;
    2637                 :            : }
    2638                 :            : static inline int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen)
    2639                 :            : {
    2640                 :            :         return -EOPNOTSUPP;
    2641                 :            : }
    2642                 :            : #endif  /* CONFIG_SECURITY */
    2643                 :            : 
    2644                 :            : #ifdef CONFIG_SECURITY_NETWORK
    2645                 :            : 
    2646                 :            : int security_unix_stream_connect(struct sock *sock, struct sock *other, struct sock *newsk);
    2647                 :            : int security_unix_may_send(struct socket *sock,  struct socket *other);
    2648                 :            : int security_socket_create(int family, int type, int protocol, int kern);
    2649                 :            : int security_socket_post_create(struct socket *sock, int family,
    2650                 :            :                                 int type, int protocol, int kern);
    2651                 :            : int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen);
    2652                 :            : int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen);
    2653                 :            : int security_socket_listen(struct socket *sock, int backlog);
    2654                 :            : int security_socket_accept(struct socket *sock, struct socket *newsock);
    2655                 :            : int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size);
    2656                 :            : int security_socket_recvmsg(struct socket *sock, struct msghdr *msg,
    2657                 :            :                             int size, int flags);
    2658                 :            : int security_socket_getsockname(struct socket *sock);
    2659                 :            : int security_socket_getpeername(struct socket *sock);
    2660                 :            : int security_socket_getsockopt(struct socket *sock, int level, int optname);
    2661                 :            : int security_socket_setsockopt(struct socket *sock, int level, int optname);
    2662                 :            : int security_socket_shutdown(struct socket *sock, int how);
    2663                 :            : int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb);
    2664                 :            : int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
    2665                 :            :                                       int __user *optlen, unsigned len);
    2666                 :            : int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid);
    2667                 :            : int security_sk_alloc(struct sock *sk, int family, gfp_t priority);
    2668                 :            : void security_sk_free(struct sock *sk);
    2669                 :            : void security_sk_clone(const struct sock *sk, struct sock *newsk);
    2670                 :            : void security_sk_classify_flow(struct sock *sk, struct flowi *fl);
    2671                 :            : void security_req_classify_flow(const struct request_sock *req, struct flowi *fl);
    2672                 :            : void security_sock_graft(struct sock*sk, struct socket *parent);
    2673                 :            : int security_inet_conn_request(struct sock *sk,
    2674                 :            :                         struct sk_buff *skb, struct request_sock *req);
    2675                 :            : void security_inet_csk_clone(struct sock *newsk,
    2676                 :            :                         const struct request_sock *req);
    2677                 :            : void security_inet_conn_established(struct sock *sk,
    2678                 :            :                         struct sk_buff *skb);
    2679                 :            : int security_secmark_relabel_packet(u32 secid);
    2680                 :            : void security_secmark_refcount_inc(void);
    2681                 :            : void security_secmark_refcount_dec(void);
    2682                 :            : int security_tun_dev_alloc_security(void **security);
    2683                 :            : void security_tun_dev_free_security(void *security);
    2684                 :            : int security_tun_dev_create(void);
    2685                 :            : int security_tun_dev_attach_queue(void *security);
    2686                 :            : int security_tun_dev_attach(struct sock *sk, void *security);
    2687                 :            : int security_tun_dev_open(void *security);
    2688                 :            : 
    2689                 :            : void security_skb_owned_by(struct sk_buff *skb, struct sock *sk);
    2690                 :            : 
    2691                 :            : #else   /* CONFIG_SECURITY_NETWORK */
    2692                 :            : static inline int security_unix_stream_connect(struct sock *sock,
    2693                 :            :                                                struct sock *other,
    2694                 :            :                                                struct sock *newsk)
    2695                 :            : {
    2696                 :            :         return 0;
    2697                 :            : }
    2698                 :            : 
    2699                 :            : static inline int security_unix_may_send(struct socket *sock,
    2700                 :            :                                          struct socket *other)
    2701                 :            : {
    2702                 :            :         return 0;
    2703                 :            : }
    2704                 :            : 
    2705                 :            : static inline int security_socket_create(int family, int type,
    2706                 :            :                                          int protocol, int kern)
    2707                 :            : {
    2708                 :            :         return 0;
    2709                 :            : }
    2710                 :            : 
    2711                 :            : static inline int security_socket_post_create(struct socket *sock,
    2712                 :            :                                               int family,
    2713                 :            :                                               int type,
    2714                 :            :                                               int protocol, int kern)
    2715                 :            : {
    2716                 :            :         return 0;
    2717                 :            : }
    2718                 :            : 
    2719                 :            : static inline int security_socket_bind(struct socket *sock,
    2720                 :            :                                        struct sockaddr *address,
    2721                 :            :                                        int addrlen)
    2722                 :            : {
    2723                 :            :         return 0;
    2724                 :            : }
    2725                 :            : 
    2726                 :            : static inline int security_socket_connect(struct socket *sock,
    2727                 :            :                                           struct sockaddr *address,
    2728                 :            :                                           int addrlen)
    2729                 :            : {
    2730                 :            :         return 0;
    2731                 :            : }
    2732                 :            : 
    2733                 :            : static inline int security_socket_listen(struct socket *sock, int backlog)
    2734                 :            : {
    2735                 :            :         return 0;
    2736                 :            : }
    2737                 :            : 
    2738                 :            : static inline int security_socket_accept(struct socket *sock,
    2739                 :            :                                          struct socket *newsock)
    2740                 :            : {
    2741                 :            :         return 0;
    2742                 :            : }
    2743                 :            : 
    2744                 :            : static inline int security_socket_sendmsg(struct socket *sock,
    2745                 :            :                                           struct msghdr *msg, int size)
    2746                 :            : {
    2747                 :            :         return 0;
    2748                 :            : }
    2749                 :            : 
    2750                 :            : static inline int security_socket_recvmsg(struct socket *sock,
    2751                 :            :                                           struct msghdr *msg, int size,
    2752                 :            :                                           int flags)
    2753                 :            : {
    2754                 :            :         return 0;
    2755                 :            : }
    2756                 :            : 
    2757                 :            : static inline int security_socket_getsockname(struct socket *sock)
    2758                 :            : {
    2759                 :            :         return 0;
    2760                 :            : }
    2761                 :            : 
    2762                 :            : static inline int security_socket_getpeername(struct socket *sock)
    2763                 :            : {
    2764                 :            :         return 0;
    2765                 :            : }
    2766                 :            : 
    2767                 :            : static inline int security_socket_getsockopt(struct socket *sock,
    2768                 :            :                                              int level, int optname)
    2769                 :            : {
    2770                 :            :         return 0;
    2771                 :            : }
    2772                 :            : 
    2773                 :            : static inline int security_socket_setsockopt(struct socket *sock,
    2774                 :            :                                              int level, int optname)
    2775                 :            : {
    2776                 :            :         return 0;
    2777                 :            : }
    2778                 :            : 
    2779                 :            : static inline int security_socket_shutdown(struct socket *sock, int how)
    2780                 :            : {
    2781                 :            :         return 0;
    2782                 :            : }
    2783                 :            : static inline int security_sock_rcv_skb(struct sock *sk,
    2784                 :            :                                         struct sk_buff *skb)
    2785                 :            : {
    2786                 :            :         return 0;
    2787                 :            : }
    2788                 :            : 
    2789                 :            : static inline int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
    2790                 :            :                                                     int __user *optlen, unsigned len)
    2791                 :            : {
    2792                 :            :         return -ENOPROTOOPT;
    2793                 :            : }
    2794                 :            : 
    2795                 :            : static inline int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)
    2796                 :            : {
    2797                 :            :         return -ENOPROTOOPT;
    2798                 :            : }
    2799                 :            : 
    2800                 :            : static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority)
    2801                 :            : {
    2802                 :            :         return 0;
    2803                 :            : }
    2804                 :            : 
    2805                 :            : static inline void security_sk_free(struct sock *sk)
    2806                 :            : {
    2807                 :            : }
    2808                 :            : 
    2809                 :            : static inline void security_sk_clone(const struct sock *sk, struct sock *newsk)
    2810                 :            : {
    2811                 :            : }
    2812                 :            : 
    2813                 :            : static inline void security_sk_classify_flow(struct sock *sk, struct flowi *fl)
    2814                 :            : {
    2815                 :            : }
    2816                 :            : 
    2817                 :            : static inline void security_req_classify_flow(const struct request_sock *req, struct flowi *fl)
    2818                 :            : {
    2819                 :            : }
    2820                 :            : 
    2821                 :            : static inline void security_sock_graft(struct sock *sk, struct socket *parent)
    2822                 :            : {
    2823                 :            : }
    2824                 :            : 
    2825                 :            : static inline int security_inet_conn_request(struct sock *sk,
    2826                 :            :                         struct sk_buff *skb, struct request_sock *req)
    2827                 :            : {
    2828                 :            :         return 0;
    2829                 :            : }
    2830                 :            : 
    2831                 :            : static inline void security_inet_csk_clone(struct sock *newsk,
    2832                 :            :                         const struct request_sock *req)
    2833                 :            : {
    2834                 :            : }
    2835                 :            : 
    2836                 :            : static inline void security_inet_conn_established(struct sock *sk,
    2837                 :            :                         struct sk_buff *skb)
    2838                 :            : {
    2839                 :            : }
    2840                 :            : 
    2841                 :            : static inline int security_secmark_relabel_packet(u32 secid)
    2842                 :            : {
    2843                 :            :         return 0;
    2844                 :            : }
    2845                 :            : 
    2846                 :            : static inline void security_secmark_refcount_inc(void)
    2847                 :            : {
    2848                 :            : }
    2849                 :            : 
    2850                 :            : static inline void security_secmark_refcount_dec(void)
    2851                 :            : {
    2852                 :            : }
    2853                 :            : 
    2854                 :            : static inline int security_tun_dev_alloc_security(void **security)
    2855                 :            : {
    2856                 :            :         return 0;
    2857                 :            : }
    2858                 :            : 
    2859                 :            : static inline void security_tun_dev_free_security(void *security)
    2860                 :            : {
    2861                 :            : }
    2862                 :            : 
    2863                 :            : static inline int security_tun_dev_create(void)
    2864                 :            : {
    2865                 :            :         return 0;
    2866                 :            : }
    2867                 :            : 
    2868                 :            : static inline int security_tun_dev_attach_queue(void *security)
    2869                 :            : {
    2870                 :            :         return 0;
    2871                 :            : }
    2872                 :            : 
    2873                 :            : static inline int security_tun_dev_attach(struct sock *sk, void *security)
    2874                 :            : {
    2875                 :            :         return 0;
    2876                 :            : }
    2877                 :            : 
    2878                 :            : static inline int security_tun_dev_open(void *security)
    2879                 :            : {
    2880                 :            :         return 0;
    2881                 :            : }
    2882                 :            : 
    2883                 :            : static inline void security_skb_owned_by(struct sk_buff *skb, struct sock *sk)
    2884                 :            : {
    2885                 :            : }
    2886                 :            : 
    2887                 :            : #endif  /* CONFIG_SECURITY_NETWORK */
    2888                 :            : 
    2889                 :            : #ifdef CONFIG_SECURITY_NETWORK_XFRM
    2890                 :            : 
    2891                 :            : int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx);
    2892                 :            : int security_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctxp);
    2893                 :            : void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx);
    2894                 :            : int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx);
    2895                 :            : int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx);
    2896                 :            : int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
    2897                 :            :                                       struct xfrm_sec_ctx *polsec, u32 secid);
    2898                 :            : int security_xfrm_state_delete(struct xfrm_state *x);
    2899                 :            : void security_xfrm_state_free(struct xfrm_state *x);
    2900                 :            : int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
    2901                 :            : int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
    2902                 :            :                                        struct xfrm_policy *xp,
    2903                 :            :                                        const struct flowi *fl);
    2904                 :            : int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid);
    2905                 :            : void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl);
    2906                 :            : 
    2907                 :            : #else   /* CONFIG_SECURITY_NETWORK_XFRM */
    2908                 :            : 
    2909                 :            : static inline int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx)
    2910                 :            : {
    2911                 :            :         return 0;
    2912                 :            : }
    2913                 :            : 
    2914                 :            : static inline int security_xfrm_policy_clone(struct xfrm_sec_ctx *old, struct xfrm_sec_ctx **new_ctxp)
    2915                 :            : {
    2916                 :            :         return 0;
    2917                 :            : }
    2918                 :            : 
    2919                 :            : static inline void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx)
    2920                 :            : {
    2921                 :            : }
    2922                 :            : 
    2923                 :            : static inline int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx)
    2924                 :            : {
    2925                 :            :         return 0;
    2926                 :            : }
    2927                 :            : 
    2928                 :            : static inline int security_xfrm_state_alloc(struct xfrm_state *x,
    2929                 :            :                                         struct xfrm_user_sec_ctx *sec_ctx)
    2930                 :            : {
    2931                 :            :         return 0;
    2932                 :            : }
    2933                 :            : 
    2934                 :            : static inline int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
    2935                 :            :                                         struct xfrm_sec_ctx *polsec, u32 secid)
    2936                 :            : {
    2937                 :            :         return 0;
    2938                 :            : }
    2939                 :            : 
    2940                 :            : static inline void security_xfrm_state_free(struct xfrm_state *x)
    2941                 :            : {
    2942                 :            : }
    2943                 :            : 
    2944                 :            : static inline int security_xfrm_state_delete(struct xfrm_state *x)
    2945                 :            : {
    2946                 :            :         return 0;
    2947                 :            : }
    2948                 :            : 
    2949                 :            : static inline int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir)
    2950                 :            : {
    2951                 :            :         return 0;
    2952                 :            : }
    2953                 :            : 
    2954                 :            : static inline int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
    2955                 :            :                         struct xfrm_policy *xp, const struct flowi *fl)
    2956                 :            : {
    2957                 :            :         return 1;
    2958                 :            : }
    2959                 :            : 
    2960                 :            : static inline int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
    2961                 :            : {
    2962                 :            :         return 0;
    2963                 :            : }
    2964                 :            : 
    2965                 :            : static inline void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl)
    2966                 :            : {
    2967                 :            : }
    2968                 :            : 
    2969                 :            : #endif  /* CONFIG_SECURITY_NETWORK_XFRM */
    2970                 :            : 
    2971                 :            : #ifdef CONFIG_SECURITY_PATH
    2972                 :            : int security_path_unlink(struct path *dir, struct dentry *dentry);
    2973                 :            : int security_path_mkdir(struct path *dir, struct dentry *dentry, umode_t mode);
    2974                 :            : int security_path_rmdir(struct path *dir, struct dentry *dentry);
    2975                 :            : int security_path_mknod(struct path *dir, struct dentry *dentry, umode_t mode,
    2976                 :            :                         unsigned int dev);
    2977                 :            : int security_path_truncate(struct path *path);
    2978                 :            : int security_path_symlink(struct path *dir, struct dentry *dentry,
    2979                 :            :                           const char *old_name);
    2980                 :            : int security_path_link(struct dentry *old_dentry, struct path *new_dir,
    2981                 :            :                        struct dentry *new_dentry);
    2982                 :            : int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
    2983                 :            :                          struct path *new_dir, struct dentry *new_dentry);
    2984                 :            : int security_path_chmod(struct path *path, umode_t mode);
    2985                 :            : int security_path_chown(struct path *path, kuid_t uid, kgid_t gid);
    2986                 :            : int security_path_chroot(struct path *path);
    2987                 :            : #else   /* CONFIG_SECURITY_PATH */
    2988                 :            : static inline int security_path_unlink(struct path *dir, struct dentry *dentry)
    2989                 :            : {
    2990                 :            :         return 0;
    2991                 :            : }
    2992                 :            : 
    2993                 :            : static inline int security_path_mkdir(struct path *dir, struct dentry *dentry,
    2994                 :            :                                       umode_t mode)
    2995                 :            : {
    2996                 :            :         return 0;
    2997                 :            : }
    2998                 :            : 
    2999                 :            : static inline int security_path_rmdir(struct path *dir, struct dentry *dentry)
    3000                 :            : {
    3001                 :            :         return 0;
    3002                 :            : }
    3003                 :            : 
    3004                 :            : static inline int security_path_mknod(struct path *dir, struct dentry *dentry,
    3005                 :            :                                       umode_t mode, unsigned int dev)
    3006                 :            : {
    3007                 :            :         return 0;
    3008                 :            : }
    3009                 :            : 
    3010                 :            : static inline int security_path_truncate(struct path *path)
    3011                 :            : {
    3012                 :            :         return 0;
    3013                 :            : }
    3014                 :            : 
    3015                 :            : static inline int security_path_symlink(struct path *dir, struct dentry *dentry,
    3016                 :            :                                         const char *old_name)
    3017                 :            : {
    3018                 :            :         return 0;
    3019                 :            : }
    3020                 :            : 
    3021                 :            : static inline int security_path_link(struct dentry *old_dentry,
    3022                 :            :                                      struct path *new_dir,
    3023                 :            :                                      struct dentry *new_dentry)
    3024                 :            : {
    3025                 :            :         return 0;
    3026                 :            : }
    3027                 :            : 
    3028                 :            : static inline int security_path_rename(struct path *old_dir,
    3029                 :            :                                        struct dentry *old_dentry,
    3030                 :            :                                        struct path *new_dir,
    3031                 :            :                                        struct dentry *new_dentry)
    3032                 :            : {
    3033                 :            :         return 0;
    3034                 :            : }
    3035                 :            : 
    3036                 :            : static inline int security_path_chmod(struct path *path, umode_t mode)
    3037                 :            : {
    3038                 :            :         return 0;
    3039                 :            : }
    3040                 :            : 
    3041                 :            : static inline int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
    3042                 :            : {
    3043                 :            :         return 0;
    3044                 :            : }
    3045                 :            : 
    3046                 :            : static inline int security_path_chroot(struct path *path)
    3047                 :            : {
    3048                 :            :         return 0;
    3049                 :            : }
    3050                 :            : #endif  /* CONFIG_SECURITY_PATH */
    3051                 :            : 
    3052                 :            : #ifdef CONFIG_KEYS
    3053                 :            : #ifdef CONFIG_SECURITY
    3054                 :            : 
    3055                 :            : int security_key_alloc(struct key *key, const struct cred *cred, unsigned long flags);
    3056                 :            : void security_key_free(struct key *key);
    3057                 :            : int security_key_permission(key_ref_t key_ref,
    3058                 :            :                             const struct cred *cred, key_perm_t perm);
    3059                 :            : int security_key_getsecurity(struct key *key, char **_buffer);
    3060                 :            : 
    3061                 :            : #else
    3062                 :            : 
    3063                 :            : static inline int security_key_alloc(struct key *key,
    3064                 :            :                                      const struct cred *cred,
    3065                 :            :                                      unsigned long flags)
    3066                 :            : {
    3067                 :            :         return 0;
    3068                 :            : }
    3069                 :            : 
    3070                 :            : static inline void security_key_free(struct key *key)
    3071                 :            : {
    3072                 :            : }
    3073                 :            : 
    3074                 :            : static inline int security_key_permission(key_ref_t key_ref,
    3075                 :            :                                           const struct cred *cred,
    3076                 :            :                                           key_perm_t perm)
    3077                 :            : {
    3078                 :            :         return 0;
    3079                 :            : }
    3080                 :            : 
    3081                 :            : static inline int security_key_getsecurity(struct key *key, char **_buffer)
    3082                 :            : {
    3083                 :            :         *_buffer = NULL;
    3084                 :            :         return 0;
    3085                 :            : }
    3086                 :            : 
    3087                 :            : #endif
    3088                 :            : #endif /* CONFIG_KEYS */
    3089                 :            : 
    3090                 :            : #ifdef CONFIG_AUDIT
    3091                 :            : #ifdef CONFIG_SECURITY
    3092                 :            : int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule);
    3093                 :            : int security_audit_rule_known(struct audit_krule *krule);
    3094                 :            : int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule,
    3095                 :            :                               struct audit_context *actx);
    3096                 :            : void security_audit_rule_free(void *lsmrule);
    3097                 :            : 
    3098                 :            : #else
    3099                 :            : 
    3100                 :            : static inline int security_audit_rule_init(u32 field, u32 op, char *rulestr,
    3101                 :            :                                            void **lsmrule)
    3102                 :            : {
    3103                 :            :         return 0;
    3104                 :            : }
    3105                 :            : 
    3106                 :            : static inline int security_audit_rule_known(struct audit_krule *krule)
    3107                 :            : {
    3108                 :            :         return 0;
    3109                 :            : }
    3110                 :            : 
    3111                 :            : static inline int security_audit_rule_match(u32 secid, u32 field, u32 op,
    3112                 :            :                                    void *lsmrule, struct audit_context *actx)
    3113                 :            : {
    3114                 :            :         return 0;
    3115                 :            : }
    3116                 :            : 
    3117                 :            : static inline void security_audit_rule_free(void *lsmrule)
    3118                 :            : { }
    3119                 :            : 
    3120                 :            : #endif /* CONFIG_SECURITY */
    3121                 :            : #endif /* CONFIG_AUDIT */
    3122                 :            : 
    3123                 :            : #ifdef CONFIG_SECURITYFS
    3124                 :            : 
    3125                 :            : extern struct dentry *securityfs_create_file(const char *name, umode_t mode,
    3126                 :            :                                              struct dentry *parent, void *data,
    3127                 :            :                                              const struct file_operations *fops);
    3128                 :            : extern struct dentry *securityfs_create_dir(const char *name, struct dentry *parent);
    3129                 :            : extern void securityfs_remove(struct dentry *dentry);
    3130                 :            : 
    3131                 :            : #else /* CONFIG_SECURITYFS */
    3132                 :            : 
    3133                 :            : static inline struct dentry *securityfs_create_dir(const char *name,
    3134                 :            :                                                    struct dentry *parent)
    3135                 :            : {
    3136                 :            :         return ERR_PTR(-ENODEV);
    3137                 :            : }
    3138                 :            : 
    3139                 :            : static inline struct dentry *securityfs_create_file(const char *name,
    3140                 :            :                                                     umode_t mode,
    3141                 :            :                                                     struct dentry *parent,
    3142                 :            :                                                     void *data,
    3143                 :            :                                                     const struct file_operations *fops)
    3144                 :            : {
    3145                 :            :         return ERR_PTR(-ENODEV);
    3146                 :            : }
    3147                 :            : 
    3148                 :            : static inline void securityfs_remove(struct dentry *dentry)
    3149                 :            : {}
    3150                 :            : 
    3151                 :            : #endif
    3152                 :            : 
    3153                 :            : #ifdef CONFIG_SECURITY
    3154                 :            : 
    3155                 :            : static inline char *alloc_secdata(void)
    3156                 :            : {
    3157                 :          3 :         return (char *)get_zeroed_page(GFP_KERNEL);
    3158                 :            : }
    3159                 :            : 
    3160                 :            : static inline void free_secdata(void *secdata)
    3161                 :            : {
    3162                 :       4978 :         free_page((unsigned long)secdata);
    3163                 :            : }
    3164                 :            : 
    3165                 :            : #else
    3166                 :            : 
    3167                 :            : static inline char *alloc_secdata(void)
    3168                 :            : {
    3169                 :            :         return (char *)1;
    3170                 :            : }
    3171                 :            : 
    3172                 :            : static inline void free_secdata(void *secdata)
    3173                 :            : { }
    3174                 :            : #endif /* CONFIG_SECURITY */
    3175                 :            : 
    3176                 :            : #ifdef CONFIG_SECURITY_YAMA
    3177                 :            : extern int yama_ptrace_access_check(struct task_struct *child,
    3178                 :            :                                     unsigned int mode);
    3179                 :            : extern int yama_ptrace_traceme(struct task_struct *parent);
    3180                 :            : extern void yama_task_free(struct task_struct *task);
    3181                 :            : extern int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3,
    3182                 :            :                            unsigned long arg4, unsigned long arg5);
    3183                 :            : #else
    3184                 :            : static inline int yama_ptrace_access_check(struct task_struct *child,
    3185                 :            :                                            unsigned int mode)
    3186                 :            : {
    3187                 :            :         return 0;
    3188                 :            : }
    3189                 :            : 
    3190                 :            : static inline int yama_ptrace_traceme(struct task_struct *parent)
    3191                 :            : {
    3192                 :            :         return 0;
    3193                 :            : }
    3194                 :            : 
    3195                 :            : static inline void yama_task_free(struct task_struct *task)
    3196                 :            : {
    3197                 :            : }
    3198                 :            : 
    3199                 :            : static inline int yama_task_prctl(int option, unsigned long arg2,
    3200                 :            :                                   unsigned long arg3, unsigned long arg4,
    3201                 :            :                                   unsigned long arg5)
    3202                 :            : {
    3203                 :            :         return -ENOSYS;
    3204                 :            : }
    3205                 :            : #endif /* CONFIG_SECURITY_YAMA */
    3206                 :            : 
    3207                 :            : #endif /* ! __LINUX_SECURITY_H */
    3208                 :            : 

Generated by: LCOV version 1.9