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