xref: /openbmc/linux/arch/x86/kernel/audit_64.c (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2250c2277SThomas Gleixner #include <linux/init.h>
3250c2277SThomas Gleixner #include <linux/types.h>
4250c2277SThomas Gleixner #include <linux/audit.h>
5250c2277SThomas Gleixner #include <asm/unistd.h>
60e5e3d44SBenjamin Thiel #include <asm/audit.h>
7250c2277SThomas Gleixner 
8250c2277SThomas Gleixner static unsigned dir_class[] = {
9250c2277SThomas Gleixner #include <asm-generic/audit_dir_write.h>
10250c2277SThomas Gleixner ~0U
11250c2277SThomas Gleixner };
12250c2277SThomas Gleixner 
13250c2277SThomas Gleixner static unsigned read_class[] = {
14250c2277SThomas Gleixner #include <asm-generic/audit_read.h>
15250c2277SThomas Gleixner ~0U
16250c2277SThomas Gleixner };
17250c2277SThomas Gleixner 
18250c2277SThomas Gleixner static unsigned write_class[] = {
19250c2277SThomas Gleixner #include <asm-generic/audit_write.h>
20250c2277SThomas Gleixner ~0U
21250c2277SThomas Gleixner };
22250c2277SThomas Gleixner 
23250c2277SThomas Gleixner static unsigned chattr_class[] = {
24250c2277SThomas Gleixner #include <asm-generic/audit_change_attr.h>
25250c2277SThomas Gleixner ~0U
26250c2277SThomas Gleixner };
27250c2277SThomas Gleixner 
28250c2277SThomas Gleixner static unsigned signal_class[] = {
29250c2277SThomas Gleixner #include <asm-generic/audit_signal.h>
30250c2277SThomas Gleixner ~0U
31250c2277SThomas Gleixner };
32250c2277SThomas Gleixner 
audit_classify_arch(int arch)33250c2277SThomas Gleixner int audit_classify_arch(int arch)
34250c2277SThomas Gleixner {
35250c2277SThomas Gleixner #ifdef CONFIG_IA32_EMULATION
36250c2277SThomas Gleixner 	if (arch == AUDIT_ARCH_I386)
37250c2277SThomas Gleixner 		return 1;
38250c2277SThomas Gleixner #endif
39250c2277SThomas Gleixner 	return 0;
40250c2277SThomas Gleixner }
41250c2277SThomas Gleixner 
audit_classify_syscall(int abi,unsigned syscall)42250c2277SThomas Gleixner int audit_classify_syscall(int abi, unsigned syscall)
43250c2277SThomas Gleixner {
44250c2277SThomas Gleixner #ifdef CONFIG_IA32_EMULATION
45250c2277SThomas Gleixner 	if (abi == AUDIT_ARCH_I386)
46250c2277SThomas Gleixner 		return ia32_classify_syscall(syscall);
47250c2277SThomas Gleixner #endif
48250c2277SThomas Gleixner 	switch(syscall) {
49250c2277SThomas Gleixner 	case __NR_open:
5042f355efSRichard Guy Briggs 		return AUDITSC_OPEN;
51250c2277SThomas Gleixner 	case __NR_openat:
5242f355efSRichard Guy Briggs 		return AUDITSC_OPENAT;
53250c2277SThomas Gleixner 	case __NR_execve:
5427d6ec7aSDavid Drysdale 	case __NR_execveat:
5542f355efSRichard Guy Briggs 		return AUDITSC_EXECVE;
56*1c30e3afSRichard Guy Briggs 	case __NR_openat2:
57*1c30e3afSRichard Guy Briggs 		return AUDITSC_OPENAT2;
58250c2277SThomas Gleixner 	default:
5942f355efSRichard Guy Briggs 		return AUDITSC_NATIVE;
60250c2277SThomas Gleixner 	}
61250c2277SThomas Gleixner }
62250c2277SThomas Gleixner 
audit_classes_init(void)63250c2277SThomas Gleixner static int __init audit_classes_init(void)
64250c2277SThomas Gleixner {
65250c2277SThomas Gleixner #ifdef CONFIG_IA32_EMULATION
66250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
67250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
68250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
69250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
70250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
71250c2277SThomas Gleixner #endif
72250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_WRITE, write_class);
73250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_READ, read_class);
74250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
75250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
76250c2277SThomas Gleixner 	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
77250c2277SThomas Gleixner 	return 0;
78250c2277SThomas Gleixner }
79250c2277SThomas Gleixner 
80250c2277SThomas Gleixner __initcall(audit_classes_init);
81