1 /* SPDX-License-Identifier: GPL-2.0 */
4 * Linux Security Module Hook declarations.
6 * Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com>
7 * Copyright (C) 2001 Greg Kroah-Hartman <greg@kroah.com>
8 * Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com>
9 * Copyright (C) 2001 James Morris <jmorris@intercode.com.au>
10 * Copyright (C) 2001 Silicon Graphics, Inc. (Trust Technology Group)
11 * Copyright (C) 2015 Intel Corporation.
12 * Copyright (C) 2015 Casey Schaufler <casey@schaufler-ca.com>
13 * Copyright (C) 2016 Mellanox Techonologies
14 * Copyright (C) 2020 Google LLC.
18 * The macro LSM_HOOK is used to define the data structures required by
19 * the LSM framework using the pattern:
21 * LSM_HOOK(<return_type>, <default_value>, <hook_name>, args...)
23 * struct security_hook_heads {
24 * #define LSM_HOOK(RET, DEFAULT, NAME, ...) struct hlist_head NAME;
25 * #include <linux/lsm_hook_defs.h>
29 LSM_HOOK(int, 0, binder_set_context_mgr
, const struct cred
*mgr
)
30 LSM_HOOK(int, 0, binder_transaction
, const struct cred
*from
,
31 const struct cred
*to
)
32 LSM_HOOK(int, 0, binder_transfer_binder
, const struct cred
*from
,
33 const struct cred
*to
)
34 LSM_HOOK(int, 0, binder_transfer_file
, const struct cred
*from
,
35 const struct cred
*to
, const struct file
*file
)
36 LSM_HOOK(int, 0, ptrace_access_check
, struct task_struct
*child
,
38 LSM_HOOK(int, 0, ptrace_traceme
, struct task_struct
*parent
)
39 LSM_HOOK(int, 0, capget
, const struct task_struct
*target
, kernel_cap_t
*effective
,
40 kernel_cap_t
*inheritable
, kernel_cap_t
*permitted
)
41 LSM_HOOK(int, 0, capset
, struct cred
*new, const struct cred
*old
,
42 const kernel_cap_t
*effective
, const kernel_cap_t
*inheritable
,
43 const kernel_cap_t
*permitted
)
44 LSM_HOOK(int, 0, capable
, const struct cred
*cred
, struct user_namespace
*ns
,
45 int cap
, unsigned int opts
)
46 LSM_HOOK(int, 0, quotactl
, int cmds
, int type
, int id
, const struct super_block
*sb
)
47 LSM_HOOK(int, 0, quota_on
, struct dentry
*dentry
)
48 LSM_HOOK(int, 0, syslog
, int type
)
49 LSM_HOOK(int, 0, settime
, const struct timespec64
*ts
,
50 const struct timezone
*tz
)
51 LSM_HOOK(int, 0, vm_enough_memory
, struct mm_struct
*mm
, long pages
)
52 LSM_HOOK(int, 0, bprm_creds_for_exec
, struct linux_binprm
*bprm
)
53 LSM_HOOK(int, 0, bprm_creds_from_file
, struct linux_binprm
*bprm
, const struct file
*file
)
54 LSM_HOOK(int, 0, bprm_check_security
, struct linux_binprm
*bprm
)
55 LSM_HOOK(void, LSM_RET_VOID
, bprm_committing_creds
, const struct linux_binprm
*bprm
)
56 LSM_HOOK(void, LSM_RET_VOID
, bprm_committed_creds
, const struct linux_binprm
*bprm
)
57 LSM_HOOK(int, 0, fs_context_submount
, struct fs_context
*fc
, struct super_block
*reference
)
58 LSM_HOOK(int, 0, fs_context_dup
, struct fs_context
*fc
,
59 struct fs_context
*src_sc
)
60 LSM_HOOK(int, -ENOPARAM
, fs_context_parse_param
, struct fs_context
*fc
,
61 struct fs_parameter
*param
)
62 LSM_HOOK(int, 0, sb_alloc_security
, struct super_block
*sb
)
63 LSM_HOOK(void, LSM_RET_VOID
, sb_delete
, struct super_block
*sb
)
64 LSM_HOOK(void, LSM_RET_VOID
, sb_free_security
, struct super_block
*sb
)
65 LSM_HOOK(void, LSM_RET_VOID
, sb_free_mnt_opts
, void *mnt_opts
)
66 LSM_HOOK(int, 0, sb_eat_lsm_opts
, char *orig
, void **mnt_opts
)
67 LSM_HOOK(int, 0, sb_mnt_opts_compat
, struct super_block
*sb
, void *mnt_opts
)
68 LSM_HOOK(int, 0, sb_remount
, struct super_block
*sb
, void *mnt_opts
)
69 LSM_HOOK(int, 0, sb_kern_mount
, const struct super_block
*sb
)
70 LSM_HOOK(int, 0, sb_show_options
, struct seq_file
*m
, struct super_block
*sb
)
71 LSM_HOOK(int, 0, sb_statfs
, struct dentry
*dentry
)
72 LSM_HOOK(int, 0, sb_mount
, const char *dev_name
, const struct path
*path
,
73 const char *type
, unsigned long flags
, void *data
)
74 LSM_HOOK(int, 0, sb_umount
, struct vfsmount
*mnt
, int flags
)
75 LSM_HOOK(int, 0, sb_pivotroot
, const struct path
*old_path
,
76 const struct path
*new_path
)
77 LSM_HOOK(int, 0, sb_set_mnt_opts
, struct super_block
*sb
, void *mnt_opts
,
78 unsigned long kern_flags
, unsigned long *set_kern_flags
)
79 LSM_HOOK(int, 0, sb_clone_mnt_opts
, const struct super_block
*oldsb
,
80 struct super_block
*newsb
, unsigned long kern_flags
,
81 unsigned long *set_kern_flags
)
82 LSM_HOOK(int, 0, move_mount
, const struct path
*from_path
,
83 const struct path
*to_path
)
84 LSM_HOOK(int, -EOPNOTSUPP
, dentry_init_security
, struct dentry
*dentry
,
85 int mode
, const struct qstr
*name
, const char **xattr_name
,
86 void **ctx
, u32
*ctxlen
)
87 LSM_HOOK(int, 0, dentry_create_files_as
, struct dentry
*dentry
, int mode
,
88 struct qstr
*name
, const struct cred
*old
, struct cred
*new)
90 #ifdef CONFIG_SECURITY_PATH
91 LSM_HOOK(int, 0, path_unlink
, const struct path
*dir
, struct dentry
*dentry
)
92 LSM_HOOK(int, 0, path_mkdir
, const struct path
*dir
, struct dentry
*dentry
,
94 LSM_HOOK(int, 0, path_rmdir
, const struct path
*dir
, struct dentry
*dentry
)
95 LSM_HOOK(int, 0, path_mknod
, const struct path
*dir
, struct dentry
*dentry
,
96 umode_t mode
, unsigned int dev
)
97 LSM_HOOK(void, LSM_RET_VOID
, path_post_mknod
, struct mnt_idmap
*idmap
,
98 struct dentry
*dentry
)
99 LSM_HOOK(int, 0, path_truncate
, const struct path
*path
)
100 LSM_HOOK(int, 0, path_symlink
, const struct path
*dir
, struct dentry
*dentry
,
101 const char *old_name
)
102 LSM_HOOK(int, 0, path_link
, struct dentry
*old_dentry
,
103 const struct path
*new_dir
, struct dentry
*new_dentry
)
104 LSM_HOOK(int, 0, path_rename
, const struct path
*old_dir
,
105 struct dentry
*old_dentry
, const struct path
*new_dir
,
106 struct dentry
*new_dentry
, unsigned int flags
)
107 LSM_HOOK(int, 0, path_chmod
, const struct path
*path
, umode_t mode
)
108 LSM_HOOK(int, 0, path_chown
, const struct path
*path
, kuid_t uid
, kgid_t gid
)
109 LSM_HOOK(int, 0, path_chroot
, const struct path
*path
)
110 #endif /* CONFIG_SECURITY_PATH */
112 /* Needed for inode based security check */
113 LSM_HOOK(int, 0, path_notify
, const struct path
*path
, u64 mask
,
114 unsigned int obj_type
)
115 LSM_HOOK(int, 0, inode_alloc_security
, struct inode
*inode
)
116 LSM_HOOK(void, LSM_RET_VOID
, inode_free_security
, struct inode
*inode
)
117 LSM_HOOK(void, LSM_RET_VOID
, inode_free_security_rcu
, void *inode_security
)
118 LSM_HOOK(int, -EOPNOTSUPP
, inode_init_security
, struct inode
*inode
,
119 struct inode
*dir
, const struct qstr
*qstr
, struct xattr
*xattrs
,
121 LSM_HOOK(int, 0, inode_init_security_anon
, struct inode
*inode
,
122 const struct qstr
*name
, const struct inode
*context_inode
)
123 LSM_HOOK(int, 0, inode_create
, struct inode
*dir
, struct dentry
*dentry
,
125 LSM_HOOK(void, LSM_RET_VOID
, inode_post_create_tmpfile
, struct mnt_idmap
*idmap
,
127 LSM_HOOK(int, 0, inode_link
, struct dentry
*old_dentry
, struct inode
*dir
,
128 struct dentry
*new_dentry
)
129 LSM_HOOK(int, 0, inode_unlink
, struct inode
*dir
, struct dentry
*dentry
)
130 LSM_HOOK(int, 0, inode_symlink
, struct inode
*dir
, struct dentry
*dentry
,
131 const char *old_name
)
132 LSM_HOOK(int, 0, inode_mkdir
, struct inode
*dir
, struct dentry
*dentry
,
134 LSM_HOOK(int, 0, inode_rmdir
, struct inode
*dir
, struct dentry
*dentry
)
135 LSM_HOOK(int, 0, inode_mknod
, struct inode
*dir
, struct dentry
*dentry
,
136 umode_t mode
, dev_t dev
)
137 LSM_HOOK(int, 0, inode_rename
, struct inode
*old_dir
, struct dentry
*old_dentry
,
138 struct inode
*new_dir
, struct dentry
*new_dentry
)
139 LSM_HOOK(int, 0, inode_readlink
, struct dentry
*dentry
)
140 LSM_HOOK(int, 0, inode_follow_link
, struct dentry
*dentry
, struct inode
*inode
,
142 LSM_HOOK(int, 0, inode_permission
, struct inode
*inode
, int mask
)
143 LSM_HOOK(int, 0, inode_setattr
, struct mnt_idmap
*idmap
, struct dentry
*dentry
,
145 LSM_HOOK(void, LSM_RET_VOID
, inode_post_setattr
, struct mnt_idmap
*idmap
,
146 struct dentry
*dentry
, int ia_valid
)
147 LSM_HOOK(int, 0, inode_getattr
, const struct path
*path
)
148 LSM_HOOK(int, 0, inode_xattr_skipcap
, const char *name
)
149 LSM_HOOK(int, 0, inode_setxattr
, struct mnt_idmap
*idmap
,
150 struct dentry
*dentry
, const char *name
, const void *value
,
151 size_t size
, int flags
)
152 LSM_HOOK(void, LSM_RET_VOID
, inode_post_setxattr
, struct dentry
*dentry
,
153 const char *name
, const void *value
, size_t size
, int flags
)
154 LSM_HOOK(int, 0, inode_getxattr
, struct dentry
*dentry
, const char *name
)
155 LSM_HOOK(int, 0, inode_listxattr
, struct dentry
*dentry
)
156 LSM_HOOK(int, 0, inode_removexattr
, struct mnt_idmap
*idmap
,
157 struct dentry
*dentry
, const char *name
)
158 LSM_HOOK(void, LSM_RET_VOID
, inode_post_removexattr
, struct dentry
*dentry
,
160 LSM_HOOK(int, 0, inode_set_acl
, struct mnt_idmap
*idmap
,
161 struct dentry
*dentry
, const char *acl_name
, struct posix_acl
*kacl
)
162 LSM_HOOK(void, LSM_RET_VOID
, inode_post_set_acl
, struct dentry
*dentry
,
163 const char *acl_name
, struct posix_acl
*kacl
)
164 LSM_HOOK(int, 0, inode_get_acl
, struct mnt_idmap
*idmap
,
165 struct dentry
*dentry
, const char *acl_name
)
166 LSM_HOOK(int, 0, inode_remove_acl
, struct mnt_idmap
*idmap
,
167 struct dentry
*dentry
, const char *acl_name
)
168 LSM_HOOK(void, LSM_RET_VOID
, inode_post_remove_acl
, struct mnt_idmap
*idmap
,
169 struct dentry
*dentry
, const char *acl_name
)
170 LSM_HOOK(int, 0, inode_need_killpriv
, struct dentry
*dentry
)
171 LSM_HOOK(int, 0, inode_killpriv
, struct mnt_idmap
*idmap
,
172 struct dentry
*dentry
)
173 LSM_HOOK(int, -EOPNOTSUPP
, inode_getsecurity
, struct mnt_idmap
*idmap
,
174 struct inode
*inode
, const char *name
, void **buffer
, bool alloc
)
175 LSM_HOOK(int, -EOPNOTSUPP
, inode_setsecurity
, struct inode
*inode
,
176 const char *name
, const void *value
, size_t size
, int flags
)
177 LSM_HOOK(int, 0, inode_listsecurity
, struct inode
*inode
, char *buffer
,
179 LSM_HOOK(void, LSM_RET_VOID
, inode_getlsmprop
, struct inode
*inode
,
180 struct lsm_prop
*prop
)
181 LSM_HOOK(int, 0, inode_copy_up
, struct dentry
*src
, struct cred
**new)
182 LSM_HOOK(int, -EOPNOTSUPP
, inode_copy_up_xattr
, struct dentry
*src
,
184 LSM_HOOK(int, 0, inode_setintegrity
, const struct inode
*inode
,
185 enum lsm_integrity_type type
, const void *value
, size_t size
)
186 LSM_HOOK(int, 0, kernfs_init_security
, struct kernfs_node
*kn_dir
,
187 struct kernfs_node
*kn
)
188 LSM_HOOK(int, 0, file_permission
, struct file
*file
, int mask
)
189 LSM_HOOK(int, 0, file_alloc_security
, struct file
*file
)
190 LSM_HOOK(void, LSM_RET_VOID
, file_release
, struct file
*file
)
191 LSM_HOOK(void, LSM_RET_VOID
, file_free_security
, struct file
*file
)
192 LSM_HOOK(int, 0, file_ioctl
, struct file
*file
, unsigned int cmd
,
194 LSM_HOOK(int, 0, file_ioctl_compat
, struct file
*file
, unsigned int cmd
,
196 LSM_HOOK(int, 0, mmap_addr
, unsigned long addr
)
197 LSM_HOOK(int, 0, mmap_file
, struct file
*file
, unsigned long reqprot
,
198 unsigned long prot
, unsigned long flags
)
199 LSM_HOOK(int, 0, file_mprotect
, struct vm_area_struct
*vma
,
200 unsigned long reqprot
, unsigned long prot
)
201 LSM_HOOK(int, 0, file_lock
, struct file
*file
, unsigned int cmd
)
202 LSM_HOOK(int, 0, file_fcntl
, struct file
*file
, unsigned int cmd
,
204 LSM_HOOK(void, LSM_RET_VOID
, file_set_fowner
, struct file
*file
)
205 LSM_HOOK(int, 0, file_send_sigiotask
, struct task_struct
*tsk
,
206 struct fown_struct
*fown
, int sig
)
207 LSM_HOOK(int, 0, file_receive
, struct file
*file
)
208 LSM_HOOK(int, 0, file_open
, struct file
*file
)
209 LSM_HOOK(int, 0, file_post_open
, struct file
*file
, int mask
)
210 LSM_HOOK(int, 0, file_truncate
, struct file
*file
)
211 LSM_HOOK(int, 0, task_alloc
, struct task_struct
*task
,
212 unsigned long clone_flags
)
213 LSM_HOOK(void, LSM_RET_VOID
, task_free
, struct task_struct
*task
)
214 LSM_HOOK(int, 0, cred_alloc_blank
, struct cred
*cred
, gfp_t gfp
)
215 LSM_HOOK(void, LSM_RET_VOID
, cred_free
, struct cred
*cred
)
216 LSM_HOOK(int, 0, cred_prepare
, struct cred
*new, const struct cred
*old
,
218 LSM_HOOK(void, LSM_RET_VOID
, cred_transfer
, struct cred
*new,
219 const struct cred
*old
)
220 LSM_HOOK(void, LSM_RET_VOID
, cred_getsecid
, const struct cred
*c
, u32
*secid
)
221 LSM_HOOK(void, LSM_RET_VOID
, cred_getlsmprop
, const struct cred
*c
,
222 struct lsm_prop
*prop
)
223 LSM_HOOK(int, 0, kernel_act_as
, struct cred
*new, u32 secid
)
224 LSM_HOOK(int, 0, kernel_create_files_as
, struct cred
*new, struct inode
*inode
)
225 LSM_HOOK(int, 0, kernel_module_request
, char *kmod_name
)
226 LSM_HOOK(int, 0, kernel_load_data
, enum kernel_load_data_id id
, bool contents
)
227 LSM_HOOK(int, 0, kernel_post_load_data
, char *buf
, loff_t size
,
228 enum kernel_load_data_id id
, char *description
)
229 LSM_HOOK(int, 0, kernel_read_file
, struct file
*file
,
230 enum kernel_read_file_id id
, bool contents
)
231 LSM_HOOK(int, 0, kernel_post_read_file
, struct file
*file
, char *buf
,
232 loff_t size
, enum kernel_read_file_id id
)
233 LSM_HOOK(int, 0, task_fix_setuid
, struct cred
*new, const struct cred
*old
,
235 LSM_HOOK(int, 0, task_fix_setgid
, struct cred
*new, const struct cred
* old
,
237 LSM_HOOK(int, 0, task_fix_setgroups
, struct cred
*new, const struct cred
* old
)
238 LSM_HOOK(int, 0, task_setpgid
, struct task_struct
*p
, pid_t pgid
)
239 LSM_HOOK(int, 0, task_getpgid
, struct task_struct
*p
)
240 LSM_HOOK(int, 0, task_getsid
, struct task_struct
*p
)
241 LSM_HOOK(void, LSM_RET_VOID
, current_getlsmprop_subj
, struct lsm_prop
*prop
)
242 LSM_HOOK(void, LSM_RET_VOID
, task_getlsmprop_obj
,
243 struct task_struct
*p
, struct lsm_prop
*prop
)
244 LSM_HOOK(int, 0, task_setnice
, struct task_struct
*p
, int nice
)
245 LSM_HOOK(int, 0, task_setioprio
, struct task_struct
*p
, int ioprio
)
246 LSM_HOOK(int, 0, task_getioprio
, struct task_struct
*p
)
247 LSM_HOOK(int, 0, task_prlimit
, const struct cred
*cred
,
248 const struct cred
*tcred
, unsigned int flags
)
249 LSM_HOOK(int, 0, task_setrlimit
, struct task_struct
*p
, unsigned int resource
,
250 struct rlimit
*new_rlim
)
251 LSM_HOOK(int, 0, task_setscheduler
, struct task_struct
*p
)
252 LSM_HOOK(int, 0, task_getscheduler
, struct task_struct
*p
)
253 LSM_HOOK(int, 0, task_movememory
, struct task_struct
*p
)
254 LSM_HOOK(int, 0, task_kill
, struct task_struct
*p
, struct kernel_siginfo
*info
,
255 int sig
, const struct cred
*cred
)
256 LSM_HOOK(int, -ENOSYS
, task_prctl
, int option
, unsigned long arg2
,
257 unsigned long arg3
, unsigned long arg4
, unsigned long arg5
)
258 LSM_HOOK(void, LSM_RET_VOID
, task_to_inode
, struct task_struct
*p
,
260 LSM_HOOK(int, 0, userns_create
, const struct cred
*cred
)
261 LSM_HOOK(int, 0, ipc_permission
, struct kern_ipc_perm
*ipcp
, short flag
)
262 LSM_HOOK(void, LSM_RET_VOID
, ipc_getlsmprop
, struct kern_ipc_perm
*ipcp
,
263 struct lsm_prop
*prop
)
264 LSM_HOOK(int, 0, msg_msg_alloc_security
, struct msg_msg
*msg
)
265 LSM_HOOK(void, LSM_RET_VOID
, msg_msg_free_security
, struct msg_msg
*msg
)
266 LSM_HOOK(int, 0, msg_queue_alloc_security
, struct kern_ipc_perm
*perm
)
267 LSM_HOOK(void, LSM_RET_VOID
, msg_queue_free_security
,
268 struct kern_ipc_perm
*perm
)
269 LSM_HOOK(int, 0, msg_queue_associate
, struct kern_ipc_perm
*perm
, int msqflg
)
270 LSM_HOOK(int, 0, msg_queue_msgctl
, struct kern_ipc_perm
*perm
, int cmd
)
271 LSM_HOOK(int, 0, msg_queue_msgsnd
, struct kern_ipc_perm
*perm
,
272 struct msg_msg
*msg
, int msqflg
)
273 LSM_HOOK(int, 0, msg_queue_msgrcv
, struct kern_ipc_perm
*perm
,
274 struct msg_msg
*msg
, struct task_struct
*target
, long type
, int mode
)
275 LSM_HOOK(int, 0, shm_alloc_security
, struct kern_ipc_perm
*perm
)
276 LSM_HOOK(void, LSM_RET_VOID
, shm_free_security
, struct kern_ipc_perm
*perm
)
277 LSM_HOOK(int, 0, shm_associate
, struct kern_ipc_perm
*perm
, int shmflg
)
278 LSM_HOOK(int, 0, shm_shmctl
, struct kern_ipc_perm
*perm
, int cmd
)
279 LSM_HOOK(int, 0, shm_shmat
, struct kern_ipc_perm
*perm
, char __user
*shmaddr
,
281 LSM_HOOK(int, 0, sem_alloc_security
, struct kern_ipc_perm
*perm
)
282 LSM_HOOK(void, LSM_RET_VOID
, sem_free_security
, struct kern_ipc_perm
*perm
)
283 LSM_HOOK(int, 0, sem_associate
, struct kern_ipc_perm
*perm
, int semflg
)
284 LSM_HOOK(int, 0, sem_semctl
, struct kern_ipc_perm
*perm
, int cmd
)
285 LSM_HOOK(int, 0, sem_semop
, struct kern_ipc_perm
*perm
, struct sembuf
*sops
,
286 unsigned nsops
, int alter
)
287 LSM_HOOK(int, 0, netlink_send
, struct sock
*sk
, struct sk_buff
*skb
)
288 LSM_HOOK(void, LSM_RET_VOID
, d_instantiate
, struct dentry
*dentry
,
290 LSM_HOOK(int, -EOPNOTSUPP
, getselfattr
, unsigned int attr
,
291 struct lsm_ctx __user
*ctx
, u32
*size
, u32 flags
)
292 LSM_HOOK(int, -EOPNOTSUPP
, setselfattr
, unsigned int attr
,
293 struct lsm_ctx
*ctx
, u32 size
, u32 flags
)
294 LSM_HOOK(int, -EINVAL
, getprocattr
, struct task_struct
*p
, const char *name
,
296 LSM_HOOK(int, -EINVAL
, setprocattr
, const char *name
, void *value
, size_t size
)
297 LSM_HOOK(int, 0, ismaclabel
, const char *name
)
298 LSM_HOOK(int, -EOPNOTSUPP
, secid_to_secctx
, u32 secid
, char **secdata
,
300 LSM_HOOK(int, -EOPNOTSUPP
, lsmprop_to_secctx
, struct lsm_prop
*prop
,
301 char **secdata
, u32
*seclen
)
302 LSM_HOOK(int, 0, secctx_to_secid
, const char *secdata
, u32 seclen
, u32
*secid
)
303 LSM_HOOK(void, LSM_RET_VOID
, release_secctx
, char *secdata
, u32 seclen
)
304 LSM_HOOK(void, LSM_RET_VOID
, inode_invalidate_secctx
, struct inode
*inode
)
305 LSM_HOOK(int, 0, inode_notifysecctx
, struct inode
*inode
, void *ctx
, u32 ctxlen
)
306 LSM_HOOK(int, 0, inode_setsecctx
, struct dentry
*dentry
, void *ctx
, u32 ctxlen
)
307 LSM_HOOK(int, -EOPNOTSUPP
, inode_getsecctx
, struct inode
*inode
, void **ctx
,
310 #if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
311 LSM_HOOK(int, 0, post_notification
, const struct cred
*w_cred
,
312 const struct cred
*cred
, struct watch_notification
*n
)
313 #endif /* CONFIG_SECURITY && CONFIG_WATCH_QUEUE */
315 #if defined(CONFIG_SECURITY) && defined(CONFIG_KEY_NOTIFICATIONS)
316 LSM_HOOK(int, 0, watch_key
, struct key
*key
)
317 #endif /* CONFIG_SECURITY && CONFIG_KEY_NOTIFICATIONS */
319 #ifdef CONFIG_SECURITY_NETWORK
320 LSM_HOOK(int, 0, unix_stream_connect
, struct sock
*sock
, struct sock
*other
,
322 LSM_HOOK(int, 0, unix_may_send
, struct socket
*sock
, struct socket
*other
)
323 LSM_HOOK(int, 0, socket_create
, int family
, int type
, int protocol
, int kern
)
324 LSM_HOOK(int, 0, socket_post_create
, struct socket
*sock
, int family
, int type
,
325 int protocol
, int kern
)
326 LSM_HOOK(int, 0, socket_socketpair
, struct socket
*socka
, struct socket
*sockb
)
327 LSM_HOOK(int, 0, socket_bind
, struct socket
*sock
, struct sockaddr
*address
,
329 LSM_HOOK(int, 0, socket_connect
, struct socket
*sock
, struct sockaddr
*address
,
331 LSM_HOOK(int, 0, socket_listen
, struct socket
*sock
, int backlog
)
332 LSM_HOOK(int, 0, socket_accept
, struct socket
*sock
, struct socket
*newsock
)
333 LSM_HOOK(int, 0, socket_sendmsg
, struct socket
*sock
, struct msghdr
*msg
,
335 LSM_HOOK(int, 0, socket_recvmsg
, struct socket
*sock
, struct msghdr
*msg
,
337 LSM_HOOK(int, 0, socket_getsockname
, struct socket
*sock
)
338 LSM_HOOK(int, 0, socket_getpeername
, struct socket
*sock
)
339 LSM_HOOK(int, 0, socket_getsockopt
, struct socket
*sock
, int level
, int optname
)
340 LSM_HOOK(int, 0, socket_setsockopt
, struct socket
*sock
, int level
, int optname
)
341 LSM_HOOK(int, 0, socket_shutdown
, struct socket
*sock
, int how
)
342 LSM_HOOK(int, 0, socket_sock_rcv_skb
, struct sock
*sk
, struct sk_buff
*skb
)
343 LSM_HOOK(int, -ENOPROTOOPT
, socket_getpeersec_stream
, struct socket
*sock
,
344 sockptr_t optval
, sockptr_t optlen
, unsigned int len
)
345 LSM_HOOK(int, -ENOPROTOOPT
, socket_getpeersec_dgram
, struct socket
*sock
,
346 struct sk_buff
*skb
, u32
*secid
)
347 LSM_HOOK(int, 0, sk_alloc_security
, struct sock
*sk
, int family
, gfp_t priority
)
348 LSM_HOOK(void, LSM_RET_VOID
, sk_free_security
, struct sock
*sk
)
349 LSM_HOOK(void, LSM_RET_VOID
, sk_clone_security
, const struct sock
*sk
,
351 LSM_HOOK(void, LSM_RET_VOID
, sk_getsecid
, const struct sock
*sk
, u32
*secid
)
352 LSM_HOOK(void, LSM_RET_VOID
, sock_graft
, struct sock
*sk
, struct socket
*parent
)
353 LSM_HOOK(int, 0, inet_conn_request
, const struct sock
*sk
, struct sk_buff
*skb
,
354 struct request_sock
*req
)
355 LSM_HOOK(void, LSM_RET_VOID
, inet_csk_clone
, struct sock
*newsk
,
356 const struct request_sock
*req
)
357 LSM_HOOK(void, LSM_RET_VOID
, inet_conn_established
, struct sock
*sk
,
359 LSM_HOOK(int, 0, secmark_relabel_packet
, u32 secid
)
360 LSM_HOOK(void, LSM_RET_VOID
, secmark_refcount_inc
, void)
361 LSM_HOOK(void, LSM_RET_VOID
, secmark_refcount_dec
, void)
362 LSM_HOOK(void, LSM_RET_VOID
, req_classify_flow
, const struct request_sock
*req
,
363 struct flowi_common
*flic
)
364 LSM_HOOK(int, 0, tun_dev_alloc_security
, void *security
)
365 LSM_HOOK(int, 0, tun_dev_create
, void)
366 LSM_HOOK(int, 0, tun_dev_attach_queue
, void *security
)
367 LSM_HOOK(int, 0, tun_dev_attach
, struct sock
*sk
, void *security
)
368 LSM_HOOK(int, 0, tun_dev_open
, void *security
)
369 LSM_HOOK(int, 0, sctp_assoc_request
, struct sctp_association
*asoc
,
371 LSM_HOOK(int, 0, sctp_bind_connect
, struct sock
*sk
, int optname
,
372 struct sockaddr
*address
, int addrlen
)
373 LSM_HOOK(void, LSM_RET_VOID
, sctp_sk_clone
, struct sctp_association
*asoc
,
374 struct sock
*sk
, struct sock
*newsk
)
375 LSM_HOOK(int, 0, sctp_assoc_established
, struct sctp_association
*asoc
,
377 LSM_HOOK(int, 0, mptcp_add_subflow
, struct sock
*sk
, struct sock
*ssk
)
378 #endif /* CONFIG_SECURITY_NETWORK */
380 #ifdef CONFIG_SECURITY_INFINIBAND
381 LSM_HOOK(int, 0, ib_pkey_access
, void *sec
, u64 subnet_prefix
, u16 pkey
)
382 LSM_HOOK(int, 0, ib_endport_manage_subnet
, void *sec
, const char *dev_name
,
384 LSM_HOOK(int, 0, ib_alloc_security
, void *sec
)
385 #endif /* CONFIG_SECURITY_INFINIBAND */
387 #ifdef CONFIG_SECURITY_NETWORK_XFRM
388 LSM_HOOK(int, 0, xfrm_policy_alloc_security
, struct xfrm_sec_ctx
**ctxp
,
389 struct xfrm_user_sec_ctx
*sec_ctx
, gfp_t gfp
)
390 LSM_HOOK(int, 0, xfrm_policy_clone_security
, struct xfrm_sec_ctx
*old_ctx
,
391 struct xfrm_sec_ctx
**new_ctx
)
392 LSM_HOOK(void, LSM_RET_VOID
, xfrm_policy_free_security
,
393 struct xfrm_sec_ctx
*ctx
)
394 LSM_HOOK(int, 0, xfrm_policy_delete_security
, struct xfrm_sec_ctx
*ctx
)
395 LSM_HOOK(int, 0, xfrm_state_alloc
, struct xfrm_state
*x
,
396 struct xfrm_user_sec_ctx
*sec_ctx
)
397 LSM_HOOK(int, 0, xfrm_state_alloc_acquire
, struct xfrm_state
*x
,
398 struct xfrm_sec_ctx
*polsec
, u32 secid
)
399 LSM_HOOK(void, LSM_RET_VOID
, xfrm_state_free_security
, struct xfrm_state
*x
)
400 LSM_HOOK(int, 0, xfrm_state_delete_security
, struct xfrm_state
*x
)
401 LSM_HOOK(int, 0, xfrm_policy_lookup
, struct xfrm_sec_ctx
*ctx
, u32 fl_secid
)
402 LSM_HOOK(int, 1, xfrm_state_pol_flow_match
, struct xfrm_state
*x
,
403 struct xfrm_policy
*xp
, const struct flowi_common
*flic
)
404 LSM_HOOK(int, 0, xfrm_decode_session
, struct sk_buff
*skb
, u32
*secid
,
406 #endif /* CONFIG_SECURITY_NETWORK_XFRM */
408 /* key management security hooks */
410 LSM_HOOK(int, 0, key_alloc
, struct key
*key
, const struct cred
*cred
,
412 LSM_HOOK(int, 0, key_permission
, key_ref_t key_ref
, const struct cred
*cred
,
413 enum key_need_perm need_perm
)
414 LSM_HOOK(int, 0, key_getsecurity
, struct key
*key
, char **buffer
)
415 LSM_HOOK(void, LSM_RET_VOID
, key_post_create_or_update
, struct key
*keyring
,
416 struct key
*key
, const void *payload
, size_t payload_len
,
417 unsigned long flags
, bool create
)
418 #endif /* CONFIG_KEYS */
421 LSM_HOOK(int, 0, audit_rule_init
, u32 field
, u32 op
, char *rulestr
,
422 void **lsmrule
, gfp_t gfp
)
423 LSM_HOOK(int, 0, audit_rule_known
, struct audit_krule
*krule
)
424 LSM_HOOK(int, 0, audit_rule_match
, struct lsm_prop
*prop
, u32 field
, u32 op
,
426 LSM_HOOK(void, LSM_RET_VOID
, audit_rule_free
, void *lsmrule
)
427 #endif /* CONFIG_AUDIT */
429 #ifdef CONFIG_BPF_SYSCALL
430 LSM_HOOK(int, 0, bpf
, int cmd
, union bpf_attr
*attr
, unsigned int size
)
431 LSM_HOOK(int, 0, bpf_map
, struct bpf_map
*map
, fmode_t fmode
)
432 LSM_HOOK(int, 0, bpf_prog
, struct bpf_prog
*prog
)
433 LSM_HOOK(int, 0, bpf_map_create
, struct bpf_map
*map
, union bpf_attr
*attr
,
434 struct bpf_token
*token
)
435 LSM_HOOK(void, LSM_RET_VOID
, bpf_map_free
, struct bpf_map
*map
)
436 LSM_HOOK(int, 0, bpf_prog_load
, struct bpf_prog
*prog
, union bpf_attr
*attr
,
437 struct bpf_token
*token
)
438 LSM_HOOK(void, LSM_RET_VOID
, bpf_prog_free
, struct bpf_prog
*prog
)
439 LSM_HOOK(int, 0, bpf_token_create
, struct bpf_token
*token
, union bpf_attr
*attr
,
440 const struct path
*path
)
441 LSM_HOOK(void, LSM_RET_VOID
, bpf_token_free
, struct bpf_token
*token
)
442 LSM_HOOK(int, 0, bpf_token_cmd
, const struct bpf_token
*token
, enum bpf_cmd cmd
)
443 LSM_HOOK(int, 0, bpf_token_capable
, const struct bpf_token
*token
, int cap
)
444 #endif /* CONFIG_BPF_SYSCALL */
446 LSM_HOOK(int, 0, locked_down
, enum lockdown_reason what
)
448 #ifdef CONFIG_PERF_EVENTS
449 LSM_HOOK(int, 0, perf_event_open
, struct perf_event_attr
*attr
, int type
)
450 LSM_HOOK(int, 0, perf_event_alloc
, struct perf_event
*event
)
451 LSM_HOOK(int, 0, perf_event_read
, struct perf_event
*event
)
452 LSM_HOOK(int, 0, perf_event_write
, struct perf_event
*event
)
453 #endif /* CONFIG_PERF_EVENTS */
455 #ifdef CONFIG_IO_URING
456 LSM_HOOK(int, 0, uring_override_creds
, const struct cred
*new)
457 LSM_HOOK(int, 0, uring_sqpoll
, void)
458 LSM_HOOK(int, 0, uring_cmd
, struct io_uring_cmd
*ioucmd
)
459 #endif /* CONFIG_IO_URING */
461 LSM_HOOK(void, LSM_RET_VOID
, initramfs_populated
, void)
463 LSM_HOOK(int, 0, bdev_alloc_security
, struct block_device
*bdev
)
464 LSM_HOOK(void, LSM_RET_VOID
, bdev_free_security
, struct block_device
*bdev
)
465 LSM_HOOK(int, 0, bdev_setintegrity
, struct block_device
*bdev
,
466 enum lsm_integrity_type type
, const void *value
, size_t size
)