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