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