xref: /linux-6.15/include/linux/audit.h (revision e034d49e)
11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
285c8721fS /* audit.h -- Auditing support
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
51da177e4SLinus Torvalds  * All Rights Reserved.
61da177e4SLinus Torvalds  *
71da177e4SLinus Torvalds  * Written by Rickard E. (Rik) Faith <[email protected]>
81da177e4SLinus Torvalds  */
91da177e4SLinus Torvalds #ifndef _LINUX_AUDIT_H_
101da177e4SLinus Torvalds #define _LINUX_AUDIT_H_
111da177e4SLinus Torvalds 
12f001e47fSDavid Woodhouse #include <linux/sched.h>
13c0a3a20bSMike Frysinger #include <linux/ptrace.h>
1442f355efSRichard Guy Briggs #include <linux/audit_arch.h>
15607ca46eSDavid Howells #include <uapi/linux/audit.h>
168e6cf365SRichard Guy Briggs #include <uapi/linux/netfilter/nf_tables.h>
17032bffd4SRichard Guy Briggs #include <uapi/linux/fanotify.h>
181da177e4SLinus Torvalds 
1984cb777eSRichard Guy Briggs #define AUDIT_INO_UNSET ((unsigned long)-1)
2084cb777eSRichard Guy Briggs #define AUDIT_DEV_UNSET ((dev_t)-1)
2184cb777eSRichard Guy Briggs 
22c2f0c7c3SSteve Grubb struct audit_sig_info {
23c2f0c7c3SSteve Grubb 	uid_t		uid;
24c2f0c7c3SSteve Grubb 	pid_t		pid;
250090c1edSGustavo A. R. Silva 	char		ctx[];
26c2f0c7c3SSteve Grubb };
27c2f0c7c3SSteve Grubb 
281da177e4SLinus Torvalds struct audit_buffer;
291da177e4SLinus Torvalds struct audit_context;
301da177e4SLinus Torvalds struct inode;
315bb289b5SDavid Woodhouse struct netlink_skb_parms;
3237721e1bSAlexey Dobriyan struct path;
33473ae30bSAl Viro struct linux_binprm;
3420ca73bcSGeorge C. Wilson struct mq_attr;
3520ca73bcSGeorge C. Wilson struct mqstat;
369d57a7f9SAhmed S. Darwish struct audit_watch;
379d57a7f9SAhmed S. Darwish struct audit_tree;
38099dd235SEric W. Biederman struct sk_buff;
39*e034d49eSKent Overstreet struct kern_ipc_perm;
409d57a7f9SAhmed S. Darwish 
419d57a7f9SAhmed S. Darwish struct audit_krule {
42041d7b98SRichard Guy Briggs 	u32			pflags;
439d57a7f9SAhmed S. Darwish 	u32			flags;
449d57a7f9SAhmed S. Darwish 	u32			listnr;
459d57a7f9SAhmed S. Darwish 	u32			action;
469d57a7f9SAhmed S. Darwish 	u32			mask[AUDIT_BITMASK_SIZE];
479d57a7f9SAhmed S. Darwish 	u32			buflen; /* for data alloc on list rules */
489d57a7f9SAhmed S. Darwish 	u32			field_count;
499d57a7f9SAhmed S. Darwish 	char			*filterkey; /* ties events to rules */
509d57a7f9SAhmed S. Darwish 	struct audit_field	*fields;
519d57a7f9SAhmed S. Darwish 	struct audit_field	*arch_f; /* quick access to arch field */
529d57a7f9SAhmed S. Darwish 	struct audit_field	*inode_f; /* quick access to an inode field */
539d57a7f9SAhmed S. Darwish 	struct audit_watch	*watch;	/* associated watch */
549d57a7f9SAhmed S. Darwish 	struct audit_tree	*tree;	/* associated watched tree */
5534d99af5SRichard Guy Briggs 	struct audit_fsnotify_mark	*exe;
569d57a7f9SAhmed S. Darwish 	struct list_head	rlist;	/* entry in audit_{watch,tree}.rules list */
57e45aa212SAl Viro 	struct list_head	list;	/* for AUDIT_LIST* purposes only */
580590b933SAl Viro 	u64			prio;
599d57a7f9SAhmed S. Darwish };
609d57a7f9SAhmed S. Darwish 
61041d7b98SRichard Guy Briggs /* Flag to indicate legacy AUDIT_LOGINUID unset usage */
62041d7b98SRichard Guy Briggs #define AUDIT_LOGINUID_LEGACY		0x1
63041d7b98SRichard Guy Briggs 
649d57a7f9SAhmed S. Darwish struct audit_field {
659d57a7f9SAhmed S. Darwish 	u32				type;
66219ca394SRichard Guy Briggs 	union {
679d57a7f9SAhmed S. Darwish 		u32			val;
68ca57ec0fSEric W. Biederman 		kuid_t			uid;
69ca57ec0fSEric W. Biederman 		kgid_t			gid;
70219ca394SRichard Guy Briggs 		struct {
7104305e4aSAhmed S. Darwish 			char		*lsm_str;
7204305e4aSAhmed S. Darwish 			void		*lsm_rule;
739d57a7f9SAhmed S. Darwish 		};
74219ca394SRichard Guy Briggs 	};
75219ca394SRichard Guy Briggs 	u32				op;
76219ca394SRichard Guy Briggs };
771da177e4SLinus Torvalds 
787e8eda73SOndrej Mosnacek enum audit_ntp_type {
797e8eda73SOndrej Mosnacek 	AUDIT_NTP_OFFSET,
807e8eda73SOndrej Mosnacek 	AUDIT_NTP_FREQ,
817e8eda73SOndrej Mosnacek 	AUDIT_NTP_STATUS,
827e8eda73SOndrej Mosnacek 	AUDIT_NTP_TAI,
837e8eda73SOndrej Mosnacek 	AUDIT_NTP_TICK,
847e8eda73SOndrej Mosnacek 	AUDIT_NTP_ADJUST,
857e8eda73SOndrej Mosnacek 
867e8eda73SOndrej Mosnacek 	AUDIT_NTP_NVALS /* count */
877e8eda73SOndrej Mosnacek };
887e8eda73SOndrej Mosnacek 
897e8eda73SOndrej Mosnacek #ifdef CONFIG_AUDITSYSCALL
907e8eda73SOndrej Mosnacek struct audit_ntp_val {
917e8eda73SOndrej Mosnacek 	long long oldval, newval;
927e8eda73SOndrej Mosnacek };
937e8eda73SOndrej Mosnacek 
947e8eda73SOndrej Mosnacek struct audit_ntp_data {
957e8eda73SOndrej Mosnacek 	struct audit_ntp_val vals[AUDIT_NTP_NVALS];
967e8eda73SOndrej Mosnacek };
977e8eda73SOndrej Mosnacek #else
987e8eda73SOndrej Mosnacek struct audit_ntp_data {};
997e8eda73SOndrej Mosnacek #endif
1007e8eda73SOndrej Mosnacek 
101c4dad0aaSRichard Guy Briggs enum audit_nfcfgop {
102c4dad0aaSRichard Guy Briggs 	AUDIT_XT_OP_REGISTER,
103c4dad0aaSRichard Guy Briggs 	AUDIT_XT_OP_REPLACE,
104a45d8853SRichard Guy Briggs 	AUDIT_XT_OP_UNREGISTER,
1058e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_TABLE_REGISTER,
1068e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_TABLE_UNREGISTER,
1078e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_CHAIN_REGISTER,
1088e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_CHAIN_UNREGISTER,
1098e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_RULE_REGISTER,
1108e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_RULE_UNREGISTER,
1118e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_SET_REGISTER,
1128e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_SET_UNREGISTER,
1138e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_SETELEM_REGISTER,
1148e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_SETELEM_UNREGISTER,
1158e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_GEN_REGISTER,
1168e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_OBJ_REGISTER,
1178e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_OBJ_UNREGISTER,
1188e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_OBJ_RESET,
1198e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_FLOWTABLE_REGISTER,
1208e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_FLOWTABLE_UNREGISTER,
1217e9be112SPhil Sutter 	AUDIT_NFT_OP_SETELEM_RESET,
122ea078ae9SPhil Sutter 	AUDIT_NFT_OP_RULE_RESET,
1238e6cf365SRichard Guy Briggs 	AUDIT_NFT_OP_INVALID,
124c4dad0aaSRichard Guy Briggs };
125c4dad0aaSRichard Guy Briggs 
126b915543bSAl Viro extern int __init audit_register_class(int class, unsigned *list);
12755669bfaSAl Viro extern int audit_classify_syscall(int abi, unsigned syscall);
128e54dc243SAmy Griffis extern int audit_classify_arch(int arch);
1294b588411SAKASHI Takahiro /* only for compat system calls */
1304b588411SAKASHI Takahiro extern unsigned compat_write_class[];
1314b588411SAKASHI Takahiro extern unsigned compat_read_class[];
1324b588411SAKASHI Takahiro extern unsigned compat_dir_class[];
1334b588411SAKASHI Takahiro extern unsigned compat_chattr_class[];
1344b588411SAKASHI Takahiro extern unsigned compat_signal_class[];
1354b588411SAKASHI Takahiro 
13678e2e802SJeff Layton /* audit_names->type values */
13778e2e802SJeff Layton #define	AUDIT_TYPE_UNKNOWN	0	/* we don't know yet */
13878e2e802SJeff Layton #define	AUDIT_TYPE_NORMAL	1	/* a "normal" audit record */
139bfcec708SJeff Layton #define	AUDIT_TYPE_PARENT	2	/* a parent audit record */
1404fa6b5ecSJeff Layton #define	AUDIT_TYPE_CHILD_DELETE 3	/* a child being deleted */
1414fa6b5ecSJeff Layton #define	AUDIT_TYPE_CHILD_CREATE 4	/* a child being created */
14278e2e802SJeff Layton 
1432950fa9dSChen Gang /* maximized args number that audit_socketcall can process */
1442950fa9dSChen Gang #define AUDITSC_ARGS		6
1452950fa9dSChen Gang 
1462e28d38aSPeter Hurley /* bit values for ->signal->audit_tty */
1472e28d38aSPeter Hurley #define AUDIT_TTY_ENABLE	BIT(0)
1482e28d38aSPeter Hurley #define AUDIT_TTY_LOG_PASSWD	BIT(1)
1492e28d38aSPeter Hurley 
15091a27b2aSJeff Layton struct filename;
15191a27b2aSJeff Layton 
152f7859590SRichard Guy Briggs #define AUDIT_OFF	0
153f7859590SRichard Guy Briggs #define AUDIT_ON	1
154f7859590SRichard Guy Briggs #define AUDIT_LOCKED	2
15596368701SPaul Moore #ifdef CONFIG_AUDIT
15696368701SPaul Moore /* These are defined in audit.c */
15796368701SPaul Moore 				/* Public API */
15896368701SPaul Moore extern __printf(4, 5)
15996368701SPaul Moore void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type,
16096368701SPaul Moore 	       const char *fmt, ...);
16196368701SPaul Moore 
16296368701SPaul Moore extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type);
16396368701SPaul Moore extern __printf(2, 3)
16496368701SPaul Moore void audit_log_format(struct audit_buffer *ab, const char *fmt, ...);
16596368701SPaul Moore extern void		    audit_log_end(struct audit_buffer *ab);
16696368701SPaul Moore extern bool		    audit_string_contains_control(const char *string,
16796368701SPaul Moore 							  size_t len);
16896368701SPaul Moore extern void		    audit_log_n_hex(struct audit_buffer *ab,
16996368701SPaul Moore 					  const unsigned char *buf,
17096368701SPaul Moore 					  size_t len);
17196368701SPaul Moore extern void		    audit_log_n_string(struct audit_buffer *ab,
17296368701SPaul Moore 					       const char *buf,
17396368701SPaul Moore 					       size_t n);
17496368701SPaul Moore extern void		    audit_log_n_untrustedstring(struct audit_buffer *ab,
17596368701SPaul Moore 							const char *string,
17696368701SPaul Moore 							size_t n);
17796368701SPaul Moore extern void		    audit_log_untrustedstring(struct audit_buffer *ab,
17896368701SPaul Moore 						      const char *string);
17996368701SPaul Moore extern void		    audit_log_d_path(struct audit_buffer *ab,
18096368701SPaul Moore 					     const char *prefix,
18196368701SPaul Moore 					     const struct path *path);
18296368701SPaul Moore extern void		    audit_log_key(struct audit_buffer *ab,
18396368701SPaul Moore 					  char *key);
184245d7369SKees Cook extern void		    audit_log_path_denied(int type,
185245d7369SKees Cook 						  const char *operation);
18696368701SPaul Moore extern void		    audit_log_lost(const char *message);
18796368701SPaul Moore 
18896368701SPaul Moore extern int audit_log_task_context(struct audit_buffer *ab);
1892a1fe215SPaul Moore extern void audit_log_task_info(struct audit_buffer *ab);
19096368701SPaul Moore 
19196368701SPaul Moore extern int		    audit_update_lsm_rules(void);
19296368701SPaul Moore 
19396368701SPaul Moore 				/* Private API (for audit.c only) */
19445a0642bSPaul Moore extern int audit_rule_change(int type, int seq, void *data, size_t datasz);
19596368701SPaul Moore extern int audit_list_rules_send(struct sk_buff *request_skb, int seq);
19696368701SPaul Moore 
1974b7d248bSRichard Guy Briggs extern int audit_set_loginuid(kuid_t loginuid);
1984b7d248bSRichard Guy Briggs 
audit_get_loginuid(struct task_struct * tsk)1994b7d248bSRichard Guy Briggs static inline kuid_t audit_get_loginuid(struct task_struct *tsk)
2004b7d248bSRichard Guy Briggs {
2014b7d248bSRichard Guy Briggs 	return tsk->loginuid;
2024b7d248bSRichard Guy Briggs }
2034b7d248bSRichard Guy Briggs 
audit_get_sessionid(struct task_struct * tsk)2044b7d248bSRichard Guy Briggs static inline unsigned int audit_get_sessionid(struct task_struct *tsk)
2054b7d248bSRichard Guy Briggs {
2064b7d248bSRichard Guy Briggs 	return tsk->sessionid;
2074b7d248bSRichard Guy Briggs }
2084b7d248bSRichard Guy Briggs 
20996368701SPaul Moore extern u32 audit_enabled;
210b48345aaSRichard Guy Briggs 
211b48345aaSRichard Guy Briggs extern int audit_signal_info(int sig, struct task_struct *t);
212b48345aaSRichard Guy Briggs 
21396368701SPaul Moore #else /* CONFIG_AUDIT */
21496368701SPaul Moore static inline __printf(4, 5)
audit_log(struct audit_context * ctx,gfp_t gfp_mask,int type,const char * fmt,...)21596368701SPaul Moore void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type,
21696368701SPaul Moore 	       const char *fmt, ...)
21796368701SPaul Moore { }
audit_log_start(struct audit_context * ctx,gfp_t gfp_mask,int type)21896368701SPaul Moore static inline struct audit_buffer *audit_log_start(struct audit_context *ctx,
21996368701SPaul Moore 						   gfp_t gfp_mask, int type)
22096368701SPaul Moore {
22196368701SPaul Moore 	return NULL;
22296368701SPaul Moore }
22396368701SPaul Moore static inline __printf(2, 3)
audit_log_format(struct audit_buffer * ab,const char * fmt,...)22496368701SPaul Moore void audit_log_format(struct audit_buffer *ab, const char *fmt, ...)
22596368701SPaul Moore { }
audit_log_end(struct audit_buffer * ab)22696368701SPaul Moore static inline void audit_log_end(struct audit_buffer *ab)
22796368701SPaul Moore { }
audit_log_n_hex(struct audit_buffer * ab,const unsigned char * buf,size_t len)22896368701SPaul Moore static inline void audit_log_n_hex(struct audit_buffer *ab,
22996368701SPaul Moore 				   const unsigned char *buf, size_t len)
23096368701SPaul Moore { }
audit_log_n_string(struct audit_buffer * ab,const char * buf,size_t n)23196368701SPaul Moore static inline void audit_log_n_string(struct audit_buffer *ab,
23296368701SPaul Moore 				      const char *buf, size_t n)
23396368701SPaul Moore { }
audit_log_n_untrustedstring(struct audit_buffer * ab,const char * string,size_t n)23496368701SPaul Moore static inline void  audit_log_n_untrustedstring(struct audit_buffer *ab,
23596368701SPaul Moore 						const char *string, size_t n)
23696368701SPaul Moore { }
audit_log_untrustedstring(struct audit_buffer * ab,const char * string)23796368701SPaul Moore static inline void audit_log_untrustedstring(struct audit_buffer *ab,
23896368701SPaul Moore 					     const char *string)
23996368701SPaul Moore { }
audit_log_d_path(struct audit_buffer * ab,const char * prefix,const struct path * path)24096368701SPaul Moore static inline void audit_log_d_path(struct audit_buffer *ab,
24196368701SPaul Moore 				    const char *prefix,
24296368701SPaul Moore 				    const struct path *path)
24396368701SPaul Moore { }
audit_log_key(struct audit_buffer * ab,char * key)24496368701SPaul Moore static inline void audit_log_key(struct audit_buffer *ab, char *key)
24596368701SPaul Moore { }
audit_log_path_denied(int type,const char * operation)246245d7369SKees Cook static inline void audit_log_path_denied(int type, const char *operation)
24796368701SPaul Moore { }
audit_log_task_context(struct audit_buffer * ab)24896368701SPaul Moore static inline int audit_log_task_context(struct audit_buffer *ab)
24996368701SPaul Moore {
25096368701SPaul Moore 	return 0;
25196368701SPaul Moore }
audit_log_task_info(struct audit_buffer * ab)2522a1fe215SPaul Moore static inline void audit_log_task_info(struct audit_buffer *ab)
25396368701SPaul Moore { }
2544b7d248bSRichard Guy Briggs 
audit_get_loginuid(struct task_struct * tsk)2554b7d248bSRichard Guy Briggs static inline kuid_t audit_get_loginuid(struct task_struct *tsk)
2564b7d248bSRichard Guy Briggs {
2574b7d248bSRichard Guy Briggs 	return INVALID_UID;
2584b7d248bSRichard Guy Briggs }
2594b7d248bSRichard Guy Briggs 
audit_get_sessionid(struct task_struct * tsk)2604b7d248bSRichard Guy Briggs static inline unsigned int audit_get_sessionid(struct task_struct *tsk)
2614b7d248bSRichard Guy Briggs {
2624b7d248bSRichard Guy Briggs 	return AUDIT_SID_UNSET;
2634b7d248bSRichard Guy Briggs }
2644b7d248bSRichard Guy Briggs 
265f7859590SRichard Guy Briggs #define audit_enabled AUDIT_OFF
266b48345aaSRichard Guy Briggs 
audit_signal_info(int sig,struct task_struct * t)267b48345aaSRichard Guy Briggs static inline int audit_signal_info(int sig, struct task_struct *t)
268b48345aaSRichard Guy Briggs {
269b48345aaSRichard Guy Briggs 	return 0;
270b48345aaSRichard Guy Briggs }
271b48345aaSRichard Guy Briggs 
27296368701SPaul Moore #endif /* CONFIG_AUDIT */
27396368701SPaul Moore 
274312103d6SChris Metcalf #ifdef CONFIG_AUDIT_COMPAT_GENERIC
275356750e3SEric Paris #define audit_is_compat(arch)  (!((arch) & __AUDIT_ARCH_64BIT))
276356750e3SEric Paris #else
277356750e3SEric Paris #define audit_is_compat(arch)  false
278356750e3SEric Paris #endif
279356750e3SEric Paris 
280c9b07eabSAl Viro #define AUDIT_INODE_PARENT	1	/* dentry represents the parent */
281c9b07eabSAl Viro #define AUDIT_INODE_HIDDEN	2	/* audit record should be hidden */
282c9b07eabSAl Viro #define AUDIT_INODE_NOEVAL	4	/* audit record incomplete */
283c9b07eabSAl Viro 
2841da177e4SLinus Torvalds #ifdef CONFIG_AUDITSYSCALL
285a9ebe0b9SEric Paris #include <asm/syscall.h> /* for syscall_get_arch() */
286a9ebe0b9SEric Paris 
2871da177e4SLinus Torvalds /* These are defined in auditsc.c */
2881da177e4SLinus Torvalds 				/* Public API */
2891da177e4SLinus Torvalds extern int  audit_alloc(struct task_struct *task);
290a4ff8dbaSEric Paris extern void __audit_free(struct task_struct *task);
2915bd2182dSPaul Moore extern void __audit_uring_entry(u8 op);
2925bd2182dSPaul Moore extern void __audit_uring_exit(int success, long code);
293b4f0d375SRichard Guy Briggs extern void __audit_syscall_entry(int major, unsigned long a0, unsigned long a1,
2941da177e4SLinus Torvalds 				  unsigned long a2, unsigned long a3);
295d7e7528bSEric Paris extern void __audit_syscall_exit(int ret_success, long ret_value);
2967ac86265SJeff Layton extern struct filename *__audit_reusename(const __user char *uptr);
29791a27b2aSJeff Layton extern void __audit_getname(struct filename *name);
298adb5c247SJeff Layton extern void __audit_inode(struct filename *name, const struct dentry *dentry,
29979f6530cSJeff Layton 				unsigned int flags);
3009f45f5bfSAl Viro extern void __audit_file(const struct file *);
301d6335d77SAndreas Gruenbacher extern void __audit_inode_child(struct inode *parent,
3024fa6b5ecSJeff Layton 				const struct dentry *dentry,
3034fa6b5ecSJeff Layton 				const unsigned char type);
304326bee02STyler Hicks extern void audit_seccomp(unsigned long syscall, long signr, int code);
305ea6eca77STyler Hicks extern void audit_seccomp_actions_logged(const char *names,
306ea6eca77STyler Hicks 					 const char *old_names, int res);
307a5cb013dSAl Viro extern void __audit_ptrace(struct task_struct *t);
308a5cb013dSAl Viro 
audit_set_context(struct task_struct * task,struct audit_context * ctx)309c0b0ae8aSRichard Guy Briggs static inline void audit_set_context(struct task_struct *task, struct audit_context *ctx)
310c0b0ae8aSRichard Guy Briggs {
311c0b0ae8aSRichard Guy Briggs 	task->audit_context = ctx;
312c0b0ae8aSRichard Guy Briggs }
313c0b0ae8aSRichard Guy Briggs 
audit_context(void)314cdfb6b34SRichard Guy Briggs static inline struct audit_context *audit_context(void)
315cdfb6b34SRichard Guy Briggs {
316cdfb6b34SRichard Guy Briggs 	return current->audit_context;
317cdfb6b34SRichard Guy Briggs }
318cdfb6b34SRichard Guy Briggs 
audit_dummy_context(void)31936734810SYaowei Bai static inline bool audit_dummy_context(void)
320d51374adSAl Viro {
321cdfb6b34SRichard Guy Briggs 	void *p = audit_context();
322d51374adSAl Viro 	return !p || *(int *)p;
323d51374adSAl Viro }
audit_free(struct task_struct * task)324a4ff8dbaSEric Paris static inline void audit_free(struct task_struct *task)
325a4ff8dbaSEric Paris {
326a4ff8dbaSEric Paris 	if (unlikely(task->audit_context))
327a4ff8dbaSEric Paris 		__audit_free(task);
328a4ff8dbaSEric Paris }
audit_uring_entry(u8 op)3295bd2182dSPaul Moore static inline void audit_uring_entry(u8 op)
3305bd2182dSPaul Moore {
3315bd2182dSPaul Moore 	/*
3325bd2182dSPaul Moore 	 * We intentionally check audit_context() before audit_enabled as most
3335bd2182dSPaul Moore 	 * Linux systems (as of ~2021) rely on systemd which forces audit to
3345bd2182dSPaul Moore 	 * be enabled regardless of the user's audit configuration.
3355bd2182dSPaul Moore 	 */
3365bd2182dSPaul Moore 	if (unlikely(audit_context() && audit_enabled))
3375bd2182dSPaul Moore 		__audit_uring_entry(op);
3385bd2182dSPaul Moore }
audit_uring_exit(int success,long code)3395bd2182dSPaul Moore static inline void audit_uring_exit(int success, long code)
3405bd2182dSPaul Moore {
34169e9cd66SJulian Orth 	if (unlikely(audit_context()))
3425bd2182dSPaul Moore 		__audit_uring_exit(success, code);
3435bd2182dSPaul Moore }
audit_syscall_entry(int major,unsigned long a0,unsigned long a1,unsigned long a2,unsigned long a3)34491397401SEric Paris static inline void audit_syscall_entry(int major, unsigned long a0,
345b05d8447SEric Paris 				       unsigned long a1, unsigned long a2,
346b05d8447SEric Paris 				       unsigned long a3)
347b05d8447SEric Paris {
348cdfb6b34SRichard Guy Briggs 	if (unlikely(audit_context()))
349b4f0d375SRichard Guy Briggs 		__audit_syscall_entry(major, a0, a1, a2, a3);
350b05d8447SEric Paris }
audit_syscall_exit(void * pt_regs)351d7e7528bSEric Paris static inline void audit_syscall_exit(void *pt_regs)
352d7e7528bSEric Paris {
353cdfb6b34SRichard Guy Briggs 	if (unlikely(audit_context())) {
354d7e7528bSEric Paris 		int success = is_syscall_success(pt_regs);
35506bdadd7SAKASHI Takahiro 		long return_code = regs_return_value(pt_regs);
356d7e7528bSEric Paris 
357d7e7528bSEric Paris 		__audit_syscall_exit(success, return_code);
358d7e7528bSEric Paris 	}
359d7e7528bSEric Paris }
audit_reusename(const __user char * name)3607ac86265SJeff Layton static inline struct filename *audit_reusename(const __user char *name)
3617ac86265SJeff Layton {
3627ac86265SJeff Layton 	if (unlikely(!audit_dummy_context()))
3637ac86265SJeff Layton 		return __audit_reusename(name);
3647ac86265SJeff Layton 	return NULL;
3657ac86265SJeff Layton }
audit_getname(struct filename * name)36691a27b2aSJeff Layton static inline void audit_getname(struct filename *name)
367d8945bb5SAl Viro {
3685ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
369d8945bb5SAl Viro 		__audit_getname(name);
370d8945bb5SAl Viro }
audit_inode(struct filename * name,const struct dentry * dentry,unsigned int aflags)37179f6530cSJeff Layton static inline void audit_inode(struct filename *name,
37279f6530cSJeff Layton 				const struct dentry *dentry,
373c9b07eabSAl Viro 				unsigned int aflags) {
374c9b07eabSAl Viro 	if (unlikely(!audit_dummy_context()))
37557d46577SRichard Guy Briggs 		__audit_inode(name, dentry, aflags);
37679f6530cSJeff Layton }
audit_file(struct file * file)3779f45f5bfSAl Viro static inline void audit_file(struct file *file)
3789f45f5bfSAl Viro {
3799f45f5bfSAl Viro 	if (unlikely(!audit_dummy_context()))
3809f45f5bfSAl Viro 		__audit_file(file);
3819f45f5bfSAl Viro }
audit_inode_parent_hidden(struct filename * name,const struct dentry * dentry)38279f6530cSJeff Layton static inline void audit_inode_parent_hidden(struct filename *name,
38379f6530cSJeff Layton 						const struct dentry *dentry)
38479f6530cSJeff Layton {
3855ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
38679f6530cSJeff Layton 		__audit_inode(name, dentry,
38779f6530cSJeff Layton 				AUDIT_INODE_PARENT | AUDIT_INODE_HIDDEN);
38873241cccSAmy Griffis }
audit_inode_child(struct inode * parent,const struct dentry * dentry,const unsigned char type)389d6335d77SAndreas Gruenbacher static inline void audit_inode_child(struct inode *parent,
3904fa6b5ecSJeff Layton 				     const struct dentry *dentry,
3914fa6b5ecSJeff Layton 				     const unsigned char type) {
3925ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
3934fa6b5ecSJeff Layton 		__audit_inode_child(parent, dentry, type);
39473241cccSAmy Griffis }
3950a4ff8c2SSteve Grubb void audit_core_dumps(long signr);
3961da177e4SLinus Torvalds 
audit_ptrace(struct task_struct * t)397a5cb013dSAl Viro static inline void audit_ptrace(struct task_struct *t)
398a5cb013dSAl Viro {
399a5cb013dSAl Viro 	if (unlikely(!audit_dummy_context()))
400a5cb013dSAl Viro 		__audit_ptrace(t);
401a5cb013dSAl Viro }
402a5cb013dSAl Viro 
4031da177e4SLinus Torvalds 				/* Private API (for audit.c only) */
404a33e6751SAl Viro extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp);
4052570ebbdSAl Viro extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode);
406d9cfea91SRichard Guy Briggs extern void __audit_bprm(struct linux_binprm *bprm);
4072950fa9dSChen Gang extern int __audit_socketcall(int nargs, unsigned long *args);
40807c49417SEric Paris extern int __audit_sockaddr(int len, void *addr);
409157cf649SAl Viro extern void __audit_fd_pair(int fd1, int fd2);
410df0a4283SAl Viro extern void __audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr);
411b9047726SDeepa Dinamani extern void __audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec64 *abs_timeout);
41220114f71SAl Viro extern void __audit_mq_notify(mqd_t mqdes, const struct sigevent *notification);
4137392906eSAl Viro extern void __audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat);
414d84f4f99SDavid Howells extern int __audit_log_bprm_fcaps(struct linux_binprm *bprm,
415d84f4f99SDavid Howells 				  const struct cred *new,
416d84f4f99SDavid Howells 				  const struct cred *old);
417ca24a23eSEric W. Biederman extern void __audit_log_capset(const struct cred *new, const struct cred *old);
418120a795dSAl Viro extern void __audit_mmap_fd(int fd, int flags);
419571e5c0eSRichard Guy Briggs extern void __audit_openat2_how(struct open_how *how);
420ca86cad7SRichard Guy Briggs extern void __audit_log_kern_module(char *name);
421032bffd4SRichard Guy Briggs extern void __audit_fanotify(u32 response, struct fanotify_response_info_audit_rule *friar);
4222d87a067SOndrej Mosnacek extern void __audit_tk_injoffset(struct timespec64 offset);
4237e8eda73SOndrej Mosnacek extern void __audit_ntp_log(const struct audit_ntp_data *ad);
424c4dad0aaSRichard Guy Briggs extern void __audit_log_nfcfg(const char *name, u8 af, unsigned int nentries,
42514224039SRichard Guy Briggs 			      enum audit_nfcfgop op, gfp_t gfp);
426d8945bb5SAl Viro 
audit_ipc_obj(struct kern_ipc_perm * ipcp)427a33e6751SAl Viro static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp)
428d8945bb5SAl Viro {
4295ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
430a33e6751SAl Viro 		__audit_ipc_obj(ipcp);
431d8945bb5SAl Viro }
audit_fd_pair(int fd1,int fd2)432157cf649SAl Viro static inline void audit_fd_pair(int fd1, int fd2)
433db349509SAl Viro {
434db349509SAl Viro 	if (unlikely(!audit_dummy_context()))
435157cf649SAl Viro 		__audit_fd_pair(fd1, fd2);
436db349509SAl Viro }
audit_ipc_set_perm(unsigned long qbytes,uid_t uid,gid_t gid,umode_t mode)4372570ebbdSAl Viro static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode)
438d8945bb5SAl Viro {
4395ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
440e816f370SAl Viro 		__audit_ipc_set_perm(qbytes, uid, gid, mode);
441d8945bb5SAl Viro }
audit_bprm(struct linux_binprm * bprm)4429410d228SRichard Guy Briggs static inline void audit_bprm(struct linux_binprm *bprm)
44307c49417SEric Paris {
44407c49417SEric Paris 	if (unlikely(!audit_dummy_context()))
445d9cfea91SRichard Guy Briggs 		__audit_bprm(bprm);
44607c49417SEric Paris }
audit_socketcall(int nargs,unsigned long * args)4472950fa9dSChen Gang static inline int audit_socketcall(int nargs, unsigned long *args)
44807c49417SEric Paris {
44907c49417SEric Paris 	if (unlikely(!audit_dummy_context()))
4502950fa9dSChen Gang 		return __audit_socketcall(nargs, args);
4512950fa9dSChen Gang 	return 0;
45207c49417SEric Paris }
45362bc306eSRichard Guy Briggs 
audit_socketcall_compat(int nargs,u32 * args)45462bc306eSRichard Guy Briggs static inline int audit_socketcall_compat(int nargs, u32 *args)
45562bc306eSRichard Guy Briggs {
45662bc306eSRichard Guy Briggs 	unsigned long a[AUDITSC_ARGS];
45762bc306eSRichard Guy Briggs 	int i;
45862bc306eSRichard Guy Briggs 
45962bc306eSRichard Guy Briggs 	if (audit_dummy_context())
46062bc306eSRichard Guy Briggs 		return 0;
46162bc306eSRichard Guy Briggs 
46262bc306eSRichard Guy Briggs 	for (i = 0; i < nargs; i++)
46362bc306eSRichard Guy Briggs 		a[i] = (unsigned long)args[i];
46462bc306eSRichard Guy Briggs 	return __audit_socketcall(nargs, a);
46562bc306eSRichard Guy Briggs }
46662bc306eSRichard Guy Briggs 
audit_sockaddr(int len,void * addr)46707c49417SEric Paris static inline int audit_sockaddr(int len, void *addr)
46807c49417SEric Paris {
46907c49417SEric Paris 	if (unlikely(!audit_dummy_context()))
47007c49417SEric Paris 		return __audit_sockaddr(len, addr);
47107c49417SEric Paris 	return 0;
47207c49417SEric Paris }
audit_mq_open(int oflag,umode_t mode,struct mq_attr * attr)473df0a4283SAl Viro static inline void audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr)
47420ca73bcSGeorge C. Wilson {
4755ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
476564f6993SAl Viro 		__audit_mq_open(oflag, mode, attr);
47720ca73bcSGeorge C. Wilson }
audit_mq_sendrecv(mqd_t mqdes,size_t msg_len,unsigned int msg_prio,const struct timespec64 * abs_timeout)478b9047726SDeepa Dinamani static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len, unsigned int msg_prio, const struct timespec64 *abs_timeout)
47920ca73bcSGeorge C. Wilson {
4805ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
481c32c8af4SAl Viro 		__audit_mq_sendrecv(mqdes, msg_len, msg_prio, abs_timeout);
48220ca73bcSGeorge C. Wilson }
audit_mq_notify(mqd_t mqdes,const struct sigevent * notification)48320114f71SAl Viro static inline void audit_mq_notify(mqd_t mqdes, const struct sigevent *notification)
48420ca73bcSGeorge C. Wilson {
4855ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
48620114f71SAl Viro 		__audit_mq_notify(mqdes, notification);
48720ca73bcSGeorge C. Wilson }
audit_mq_getsetattr(mqd_t mqdes,struct mq_attr * mqstat)4887392906eSAl Viro static inline void audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat)
48920ca73bcSGeorge C. Wilson {
4905ac3a9c2SAl Viro 	if (unlikely(!audit_dummy_context()))
4917392906eSAl Viro 		__audit_mq_getsetattr(mqdes, mqstat);
49220ca73bcSGeorge C. Wilson }
4933fc689e9SEric Paris 
audit_log_bprm_fcaps(struct linux_binprm * bprm,const struct cred * new,const struct cred * old)494d84f4f99SDavid Howells static inline int audit_log_bprm_fcaps(struct linux_binprm *bprm,
495d84f4f99SDavid Howells 				       const struct cred *new,
496d84f4f99SDavid Howells 				       const struct cred *old)
4973fc689e9SEric Paris {
4983fc689e9SEric Paris 	if (unlikely(!audit_dummy_context()))
499d84f4f99SDavid Howells 		return __audit_log_bprm_fcaps(bprm, new, old);
500d84f4f99SDavid Howells 	return 0;
5013fc689e9SEric Paris }
5023fc689e9SEric Paris 
audit_log_capset(const struct cred * new,const struct cred * old)503ca24a23eSEric W. Biederman static inline void audit_log_capset(const struct cred *new,
504d84f4f99SDavid Howells 				   const struct cred *old)
505e68b75a0SEric Paris {
506e68b75a0SEric Paris 	if (unlikely(!audit_dummy_context()))
507ca24a23eSEric W. Biederman 		__audit_log_capset(new, old);
508e68b75a0SEric Paris }
509e68b75a0SEric Paris 
audit_mmap_fd(int fd,int flags)510120a795dSAl Viro static inline void audit_mmap_fd(int fd, int flags)
511120a795dSAl Viro {
512120a795dSAl Viro 	if (unlikely(!audit_dummy_context()))
513120a795dSAl Viro 		__audit_mmap_fd(fd, flags);
514120a795dSAl Viro }
515120a795dSAl Viro 
audit_openat2_how(struct open_how * how)516571e5c0eSRichard Guy Briggs static inline void audit_openat2_how(struct open_how *how)
517571e5c0eSRichard Guy Briggs {
518571e5c0eSRichard Guy Briggs 	if (unlikely(!audit_dummy_context()))
519571e5c0eSRichard Guy Briggs 		__audit_openat2_how(how);
520571e5c0eSRichard Guy Briggs }
521571e5c0eSRichard Guy Briggs 
audit_log_kern_module(char * name)522ca86cad7SRichard Guy Briggs static inline void audit_log_kern_module(char *name)
523ca86cad7SRichard Guy Briggs {
524ca86cad7SRichard Guy Briggs 	if (!audit_dummy_context())
525ca86cad7SRichard Guy Briggs 		__audit_log_kern_module(name);
526ca86cad7SRichard Guy Briggs }
527ca86cad7SRichard Guy Briggs 
audit_fanotify(u32 response,struct fanotify_response_info_audit_rule * friar)528032bffd4SRichard Guy Briggs static inline void audit_fanotify(u32 response, struct fanotify_response_info_audit_rule *friar)
529de8cd83eSSteve Grubb {
530de8cd83eSSteve Grubb 	if (!audit_dummy_context())
531032bffd4SRichard Guy Briggs 		__audit_fanotify(response, friar);
532de8cd83eSSteve Grubb }
533de8cd83eSSteve Grubb 
audit_tk_injoffset(struct timespec64 offset)5342d87a067SOndrej Mosnacek static inline void audit_tk_injoffset(struct timespec64 offset)
5352d87a067SOndrej Mosnacek {
5362d87a067SOndrej Mosnacek 	/* ignore no-op events */
5372d87a067SOndrej Mosnacek 	if (offset.tv_sec == 0 && offset.tv_nsec == 0)
5382d87a067SOndrej Mosnacek 		return;
5392d87a067SOndrej Mosnacek 
5402d87a067SOndrej Mosnacek 	if (!audit_dummy_context())
5412d87a067SOndrej Mosnacek 		__audit_tk_injoffset(offset);
5422d87a067SOndrej Mosnacek }
5432d87a067SOndrej Mosnacek 
audit_ntp_init(struct audit_ntp_data * ad)5447e8eda73SOndrej Mosnacek static inline void audit_ntp_init(struct audit_ntp_data *ad)
5457e8eda73SOndrej Mosnacek {
5467e8eda73SOndrej Mosnacek 	memset(ad, 0, sizeof(*ad));
5477e8eda73SOndrej Mosnacek }
5487e8eda73SOndrej Mosnacek 
audit_ntp_set_old(struct audit_ntp_data * ad,enum audit_ntp_type type,long long val)5497e8eda73SOndrej Mosnacek static inline void audit_ntp_set_old(struct audit_ntp_data *ad,
5507e8eda73SOndrej Mosnacek 				     enum audit_ntp_type type, long long val)
5517e8eda73SOndrej Mosnacek {
5527e8eda73SOndrej Mosnacek 	ad->vals[type].oldval = val;
5537e8eda73SOndrej Mosnacek }
5547e8eda73SOndrej Mosnacek 
audit_ntp_set_new(struct audit_ntp_data * ad,enum audit_ntp_type type,long long val)5557e8eda73SOndrej Mosnacek static inline void audit_ntp_set_new(struct audit_ntp_data *ad,
5567e8eda73SOndrej Mosnacek 				     enum audit_ntp_type type, long long val)
5577e8eda73SOndrej Mosnacek {
5587e8eda73SOndrej Mosnacek 	ad->vals[type].newval = val;
5597e8eda73SOndrej Mosnacek }
5607e8eda73SOndrej Mosnacek 
audit_ntp_log(const struct audit_ntp_data * ad)5617e8eda73SOndrej Mosnacek static inline void audit_ntp_log(const struct audit_ntp_data *ad)
5627e8eda73SOndrej Mosnacek {
5637e8eda73SOndrej Mosnacek 	if (!audit_dummy_context())
5647e8eda73SOndrej Mosnacek 		__audit_ntp_log(ad);
5657e8eda73SOndrej Mosnacek }
5667e8eda73SOndrej Mosnacek 
audit_log_nfcfg(const char * name,u8 af,unsigned int nentries,enum audit_nfcfgop op,gfp_t gfp)567c4dad0aaSRichard Guy Briggs static inline void audit_log_nfcfg(const char *name, u8 af,
568c4dad0aaSRichard Guy Briggs 				   unsigned int nentries,
56914224039SRichard Guy Briggs 				   enum audit_nfcfgop op, gfp_t gfp)
570c4dad0aaSRichard Guy Briggs {
571c4dad0aaSRichard Guy Briggs 	if (audit_enabled)
57214224039SRichard Guy Briggs 		__audit_log_nfcfg(name, af, nentries, op, gfp);
573c4dad0aaSRichard Guy Briggs }
574c4dad0aaSRichard Guy Briggs 
575471a5c7cSAl Viro extern int audit_n_rules;
576e54dc243SAmy Griffis extern int audit_signals;
577d7e7528bSEric Paris #else /* CONFIG_AUDITSYSCALL */
audit_alloc(struct task_struct * task)5789321d526SKees Cook static inline int audit_alloc(struct task_struct *task)
5799321d526SKees Cook {
5809321d526SKees Cook 	return 0;
5819321d526SKees Cook }
audit_free(struct task_struct * task)5829321d526SKees Cook static inline void audit_free(struct task_struct *task)
5839321d526SKees Cook { }
audit_uring_entry(u8 op)5845bd2182dSPaul Moore static inline void audit_uring_entry(u8 op)
5855bd2182dSPaul Moore { }
audit_uring_exit(int success,long code)5865bd2182dSPaul Moore static inline void audit_uring_exit(int success, long code)
5875bd2182dSPaul Moore { }
audit_syscall_entry(int major,unsigned long a0,unsigned long a1,unsigned long a2,unsigned long a3)58891397401SEric Paris static inline void audit_syscall_entry(int major, unsigned long a0,
5899321d526SKees Cook 				       unsigned long a1, unsigned long a2,
5909321d526SKees Cook 				       unsigned long a3)
5919321d526SKees Cook { }
audit_syscall_exit(void * pt_regs)5929321d526SKees Cook static inline void audit_syscall_exit(void *pt_regs)
5939321d526SKees Cook { }
audit_dummy_context(void)59436734810SYaowei Bai static inline bool audit_dummy_context(void)
5959321d526SKees Cook {
59636734810SYaowei Bai 	return true;
5979321d526SKees Cook }
audit_set_context(struct task_struct * task,struct audit_context * ctx)598c0b0ae8aSRichard Guy Briggs static inline void audit_set_context(struct task_struct *task, struct audit_context *ctx)
599c0b0ae8aSRichard Guy Briggs { }
audit_context(void)600cdfb6b34SRichard Guy Briggs static inline struct audit_context *audit_context(void)
601cdfb6b34SRichard Guy Briggs {
602cdfb6b34SRichard Guy Briggs 	return NULL;
603cdfb6b34SRichard Guy Briggs }
audit_reusename(const __user char * name)6047ac86265SJeff Layton static inline struct filename *audit_reusename(const __user char *name)
6057ac86265SJeff Layton {
6067ac86265SJeff Layton 	return NULL;
6077ac86265SJeff Layton }
audit_getname(struct filename * name)60891a27b2aSJeff Layton static inline void audit_getname(struct filename *name)
6099321d526SKees Cook { }
audit_inode(struct filename * name,const struct dentry * dentry,unsigned int aflags)610adb5c247SJeff Layton static inline void audit_inode(struct filename *name,
611adb5c247SJeff Layton 				const struct dentry *dentry,
612c9b07eabSAl Viro 				unsigned int aflags)
6139321d526SKees Cook { }
audit_file(struct file * file)6149f45f5bfSAl Viro static inline void audit_file(struct file *file)
6159f45f5bfSAl Viro {
6169f45f5bfSAl Viro }
audit_inode_parent_hidden(struct filename * name,const struct dentry * dentry)61779f6530cSJeff Layton static inline void audit_inode_parent_hidden(struct filename *name,
61879f6530cSJeff Layton 				const struct dentry *dentry)
61979f6530cSJeff Layton { }
audit_inode_child(struct inode * parent,const struct dentry * dentry,const unsigned char type)620d6335d77SAndreas Gruenbacher static inline void audit_inode_child(struct inode *parent,
6214fa6b5ecSJeff Layton 				     const struct dentry *dentry,
6224fa6b5ecSJeff Layton 				     const unsigned char type)
6239321d526SKees Cook { }
audit_core_dumps(long signr)6249321d526SKees Cook static inline void audit_core_dumps(long signr)
6259321d526SKees Cook { }
audit_seccomp(unsigned long syscall,long signr,int code)6269321d526SKees Cook static inline void audit_seccomp(unsigned long syscall, long signr, int code)
6279321d526SKees Cook { }
audit_seccomp_actions_logged(const char * names,const char * old_names,int res)628ea6eca77STyler Hicks static inline void audit_seccomp_actions_logged(const char *names,
629ea6eca77STyler Hicks 						const char *old_names, int res)
630ea6eca77STyler Hicks { }
audit_ipc_obj(struct kern_ipc_perm * ipcp)6319321d526SKees Cook static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp)
6329321d526SKees Cook { }
audit_ipc_set_perm(unsigned long qbytes,uid_t uid,gid_t gid,umode_t mode)6339321d526SKees Cook static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid,
6349321d526SKees Cook 					gid_t gid, umode_t mode)
6359321d526SKees Cook { }
audit_bprm(struct linux_binprm * bprm)6369410d228SRichard Guy Briggs static inline void audit_bprm(struct linux_binprm *bprm)
6379410d228SRichard Guy Briggs { }
audit_socketcall(int nargs,unsigned long * args)6382950fa9dSChen Gang static inline int audit_socketcall(int nargs, unsigned long *args)
6392950fa9dSChen Gang {
6402950fa9dSChen Gang 	return 0;
6412950fa9dSChen Gang }
64262bc306eSRichard Guy Briggs 
audit_socketcall_compat(int nargs,u32 * args)64362bc306eSRichard Guy Briggs static inline int audit_socketcall_compat(int nargs, u32 *args)
64462bc306eSRichard Guy Briggs {
64562bc306eSRichard Guy Briggs 	return 0;
64662bc306eSRichard Guy Briggs }
64762bc306eSRichard Guy Briggs 
audit_fd_pair(int fd1,int fd2)6489321d526SKees Cook static inline void audit_fd_pair(int fd1, int fd2)
6499321d526SKees Cook { }
audit_sockaddr(int len,void * addr)6509321d526SKees Cook static inline int audit_sockaddr(int len, void *addr)
6519321d526SKees Cook {
6529321d526SKees Cook 	return 0;
6539321d526SKees Cook }
audit_mq_open(int oflag,umode_t mode,struct mq_attr * attr)6549321d526SKees Cook static inline void audit_mq_open(int oflag, umode_t mode, struct mq_attr *attr)
6559321d526SKees Cook { }
audit_mq_sendrecv(mqd_t mqdes,size_t msg_len,unsigned int msg_prio,const struct timespec64 * abs_timeout)6569321d526SKees Cook static inline void audit_mq_sendrecv(mqd_t mqdes, size_t msg_len,
6579321d526SKees Cook 				     unsigned int msg_prio,
658b9047726SDeepa Dinamani 				     const struct timespec64 *abs_timeout)
6599321d526SKees Cook { }
audit_mq_notify(mqd_t mqdes,const struct sigevent * notification)6609321d526SKees Cook static inline void audit_mq_notify(mqd_t mqdes,
6619321d526SKees Cook 				   const struct sigevent *notification)
6629321d526SKees Cook { }
audit_mq_getsetattr(mqd_t mqdes,struct mq_attr * mqstat)6639321d526SKees Cook static inline void audit_mq_getsetattr(mqd_t mqdes, struct mq_attr *mqstat)
6649321d526SKees Cook { }
audit_log_bprm_fcaps(struct linux_binprm * bprm,const struct cred * new,const struct cred * old)6659321d526SKees Cook static inline int audit_log_bprm_fcaps(struct linux_binprm *bprm,
6669321d526SKees Cook 				       const struct cred *new,
6679321d526SKees Cook 				       const struct cred *old)
6689321d526SKees Cook {
6699321d526SKees Cook 	return 0;
6709321d526SKees Cook }
audit_log_capset(const struct cred * new,const struct cred * old)671ca24a23eSEric W. Biederman static inline void audit_log_capset(const struct cred *new,
6729321d526SKees Cook 				    const struct cred *old)
6739321d526SKees Cook { }
audit_mmap_fd(int fd,int flags)6749321d526SKees Cook static inline void audit_mmap_fd(int fd, int flags)
6759321d526SKees Cook { }
676ca86cad7SRichard Guy Briggs 
audit_openat2_how(struct open_how * how)677571e5c0eSRichard Guy Briggs static inline void audit_openat2_how(struct open_how *how)
678571e5c0eSRichard Guy Briggs { }
679571e5c0eSRichard Guy Briggs 
audit_log_kern_module(char * name)680ca86cad7SRichard Guy Briggs static inline void audit_log_kern_module(char *name)
681ca86cad7SRichard Guy Briggs {
682ca86cad7SRichard Guy Briggs }
683ca86cad7SRichard Guy Briggs 
audit_fanotify(u32 response,struct fanotify_response_info_audit_rule * friar)684032bffd4SRichard Guy Briggs static inline void audit_fanotify(u32 response, struct fanotify_response_info_audit_rule *friar)
685de8cd83eSSteve Grubb { }
686de8cd83eSSteve Grubb 
audit_tk_injoffset(struct timespec64 offset)6872d87a067SOndrej Mosnacek static inline void audit_tk_injoffset(struct timespec64 offset)
6882d87a067SOndrej Mosnacek { }
6892d87a067SOndrej Mosnacek 
audit_ntp_init(struct audit_ntp_data * ad)6907e8eda73SOndrej Mosnacek static inline void audit_ntp_init(struct audit_ntp_data *ad)
6917e8eda73SOndrej Mosnacek { }
6927e8eda73SOndrej Mosnacek 
audit_ntp_set_old(struct audit_ntp_data * ad,enum audit_ntp_type type,long long val)6937e8eda73SOndrej Mosnacek static inline void audit_ntp_set_old(struct audit_ntp_data *ad,
6947e8eda73SOndrej Mosnacek 				     enum audit_ntp_type type, long long val)
6957e8eda73SOndrej Mosnacek { }
6967e8eda73SOndrej Mosnacek 
audit_ntp_set_new(struct audit_ntp_data * ad,enum audit_ntp_type type,long long val)6977e8eda73SOndrej Mosnacek static inline void audit_ntp_set_new(struct audit_ntp_data *ad,
6987e8eda73SOndrej Mosnacek 				     enum audit_ntp_type type, long long val)
6997e8eda73SOndrej Mosnacek { }
7007e8eda73SOndrej Mosnacek 
audit_ntp_log(const struct audit_ntp_data * ad)7017e8eda73SOndrej Mosnacek static inline void audit_ntp_log(const struct audit_ntp_data *ad)
7027e8eda73SOndrej Mosnacek { }
7037e8eda73SOndrej Mosnacek 
audit_ptrace(struct task_struct * t)7049321d526SKees Cook static inline void audit_ptrace(struct task_struct *t)
7059321d526SKees Cook { }
706c4dad0aaSRichard Guy Briggs 
audit_log_nfcfg(const char * name,u8 af,unsigned int nentries,enum audit_nfcfgop op,gfp_t gfp)707c4dad0aaSRichard Guy Briggs static inline void audit_log_nfcfg(const char *name, u8 af,
708c4dad0aaSRichard Guy Briggs 				   unsigned int nentries,
70914224039SRichard Guy Briggs 				   enum audit_nfcfgop op, gfp_t gfp)
710c4dad0aaSRichard Guy Briggs { }
711c4dad0aaSRichard Guy Briggs 
712471a5c7cSAl Viro #define audit_n_rules 0
713e54dc243SAmy Griffis #define audit_signals 0
714d7e7528bSEric Paris #endif /* CONFIG_AUDITSYSCALL */
7151da177e4SLinus Torvalds 
audit_loginuid_set(struct task_struct * tsk)716780a7654SEric W. Biederman static inline bool audit_loginuid_set(struct task_struct *tsk)
717780a7654SEric W. Biederman {
718780a7654SEric W. Biederman 	return uid_valid(audit_get_loginuid(tsk));
719780a7654SEric W. Biederman }
720780a7654SEric W. Biederman 
7211da177e4SLinus Torvalds #endif
722