xref: /openbmc/linux/arch/sparc/kernel/audit.c (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2a88b5ba8SSam Ravnborg #include <linux/init.h>
3a88b5ba8SSam Ravnborg #include <linux/types.h>
4a88b5ba8SSam Ravnborg #include <linux/audit.h>
5a88b5ba8SSam Ravnborg #include <asm/unistd.h>
6a88b5ba8SSam Ravnborg 
7a1ca187eSSam Ravnborg #include "kernel.h"
8a1ca187eSSam Ravnborg 
99ef595d8SJoe Perches static unsigned int dir_class[] = {
10a88b5ba8SSam Ravnborg #include <asm-generic/audit_dir_write.h>
11a88b5ba8SSam Ravnborg ~0U
12a88b5ba8SSam Ravnborg };
13a88b5ba8SSam Ravnborg 
149ef595d8SJoe Perches static unsigned int read_class[] = {
15a88b5ba8SSam Ravnborg #include <asm-generic/audit_read.h>
16a88b5ba8SSam Ravnborg ~0U
17a88b5ba8SSam Ravnborg };
18a88b5ba8SSam Ravnborg 
199ef595d8SJoe Perches static unsigned int write_class[] = {
20a88b5ba8SSam Ravnborg #include <asm-generic/audit_write.h>
21a88b5ba8SSam Ravnborg ~0U
22a88b5ba8SSam Ravnborg };
23a88b5ba8SSam Ravnborg 
249ef595d8SJoe Perches static unsigned int chattr_class[] = {
25a88b5ba8SSam Ravnborg #include <asm-generic/audit_change_attr.h>
26a88b5ba8SSam Ravnborg ~0U
27a88b5ba8SSam Ravnborg };
28a88b5ba8SSam Ravnborg 
299ef595d8SJoe Perches static unsigned int signal_class[] = {
30a88b5ba8SSam Ravnborg #include <asm-generic/audit_signal.h>
31a88b5ba8SSam Ravnborg ~0U
32a88b5ba8SSam Ravnborg };
33a88b5ba8SSam Ravnborg 
audit_classify_arch(int arch)34a88b5ba8SSam Ravnborg int audit_classify_arch(int arch)
35a88b5ba8SSam Ravnborg {
36a88b5ba8SSam Ravnborg #ifdef CONFIG_COMPAT
37a88b5ba8SSam Ravnborg 	if (arch == AUDIT_ARCH_SPARC)
38a88b5ba8SSam Ravnborg 		return 1;
39a88b5ba8SSam Ravnborg #endif
40a88b5ba8SSam Ravnborg 	return 0;
41a88b5ba8SSam Ravnborg }
42a88b5ba8SSam Ravnborg 
audit_classify_syscall(int abi,unsigned int syscall)439ef595d8SJoe Perches int audit_classify_syscall(int abi, unsigned int syscall)
44a88b5ba8SSam Ravnborg {
45a88b5ba8SSam Ravnborg #ifdef CONFIG_COMPAT
46a88b5ba8SSam Ravnborg 	if (abi == AUDIT_ARCH_SPARC)
47a88b5ba8SSam Ravnborg 		return sparc32_classify_syscall(syscall);
48a88b5ba8SSam Ravnborg #endif
49a88b5ba8SSam Ravnborg 	switch(syscall) {
50a88b5ba8SSam Ravnborg 	case __NR_open:
5142f355efSRichard Guy Briggs 		return AUDITSC_OPEN;
52a88b5ba8SSam Ravnborg 	case __NR_openat:
5342f355efSRichard Guy Briggs 		return AUDITSC_OPENAT;
54a88b5ba8SSam Ravnborg 	case __NR_socketcall:
5542f355efSRichard Guy Briggs 		return AUDITSC_SOCKETCALL;
56a88b5ba8SSam Ravnborg 	case __NR_execve:
5742f355efSRichard Guy Briggs 		return AUDITSC_EXECVE;
58*1c30e3afSRichard Guy Briggs 	case __NR_openat2:
59*1c30e3afSRichard Guy Briggs 		return AUDITSC_OPENAT2;
60a88b5ba8SSam Ravnborg 	default:
6142f355efSRichard Guy Briggs 		return AUDITSC_NATIVE;
62a88b5ba8SSam Ravnborg 	}
63a88b5ba8SSam Ravnborg }
64a88b5ba8SSam Ravnborg 
audit_classes_init(void)65a88b5ba8SSam Ravnborg static int __init audit_classes_init(void)
66a88b5ba8SSam Ravnborg {
67a88b5ba8SSam Ravnborg #ifdef CONFIG_COMPAT
68a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
69a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
70a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
71a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
72a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class);
73a88b5ba8SSam Ravnborg #endif
74a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_WRITE, write_class);
75a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_READ, read_class);
76a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
77a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
78a88b5ba8SSam Ravnborg 	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
79a88b5ba8SSam Ravnborg 	return 0;
80a88b5ba8SSam Ravnborg }
81a88b5ba8SSam Ravnborg 
82a88b5ba8SSam Ravnborg __initcall(audit_classes_init);
83