diff options
Diffstat (limited to 'include/linux/audit.h')
| -rw-r--r-- | include/linux/audit.h | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/include/linux/audit.h b/include/linux/audit.h index 82b7c1116a85..d06134ac6245 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h @@ -11,6 +11,7 @@  #include <linux/sched.h>  #include <linux/ptrace.h> +#include <linux/audit_arch.h>  #include <uapi/linux/audit.h>  #include <uapi/linux/netfilter/nf_tables.h> @@ -286,7 +287,10 @@ static inline int audit_signal_info(int sig, struct task_struct *t)  /* These are defined in auditsc.c */  				/* Public API */  extern int  audit_alloc(struct task_struct *task); +extern int  audit_alloc_kernel(struct task_struct *task);  extern void __audit_free(struct task_struct *task); +extern void __audit_uring_entry(u8 op); +extern void __audit_uring_exit(int success, long code);  extern void __audit_syscall_entry(int major, unsigned long a0, unsigned long a1,  				  unsigned long a2, unsigned long a3);  extern void __audit_syscall_exit(int ret_success, long ret_value); @@ -323,6 +327,21 @@ static inline void audit_free(struct task_struct *task)  	if (unlikely(task->audit_context))  		__audit_free(task);  } +static inline void audit_uring_entry(u8 op) +{ +	/* +	 * We intentionally check audit_context() before audit_enabled as most +	 * Linux systems (as of ~2021) rely on systemd which forces audit to +	 * be enabled regardless of the user's audit configuration. +	 */ +	if (unlikely(audit_context() && audit_enabled)) +		__audit_uring_entry(op); +} +static inline void audit_uring_exit(int success, long code) +{ +	if (unlikely(!audit_dummy_context())) +		__audit_uring_exit(success, code); +}  static inline void audit_syscall_entry(int major, unsigned long a0,  				       unsigned long a1, unsigned long a2,  				       unsigned long a3) @@ -398,6 +417,7 @@ extern int __audit_log_bprm_fcaps(struct linux_binprm *bprm,  				  const struct cred *old);  extern void __audit_log_capset(const struct cred *new, const struct cred *old);  extern void __audit_mmap_fd(int fd, int flags); +extern void __audit_openat2_how(struct open_how *how);  extern void __audit_log_kern_module(char *name);  extern void __audit_fanotify(unsigned int response);  extern void __audit_tk_injoffset(struct timespec64 offset); @@ -494,6 +514,12 @@ static inline void audit_mmap_fd(int fd, int flags)  		__audit_mmap_fd(fd, flags);  } +static inline void audit_openat2_how(struct open_how *how) +{ +	if (unlikely(!audit_dummy_context())) +		__audit_openat2_how(how); +} +  static inline void audit_log_kern_module(char *name)  {  	if (!audit_dummy_context()) @@ -554,8 +580,16 @@ static inline int audit_alloc(struct task_struct *task)  {  	return 0;  } +static inline int audit_alloc_kernel(struct task_struct *task) +{ +	return 0; +}  static inline void audit_free(struct task_struct *task)  { } +static inline void audit_uring_entry(u8 op) +{ } +static inline void audit_uring_exit(int success, long code) +{ }  static inline void audit_syscall_entry(int major, unsigned long a0,  				       unsigned long a1, unsigned long a2,  				       unsigned long a3) @@ -645,6 +679,9 @@ static inline void audit_log_capset(const struct cred *new,  static inline void audit_mmap_fd(int fd, int flags)  { } +static inline void audit_openat2_how(struct open_how *how) +{ } +  static inline void audit_log_kern_module(char *name)  {  } |