xref: /openbmc/linux/arch/powerpc/kernel/audit.c (revision 7f13da40e36c84d0d046b7adbd060af7d3717250)
1c0803799SAl Viro #include <linux/init.h>
2c0803799SAl Viro #include <linux/types.h>
3c0803799SAl Viro #include <linux/audit.h>
4c0803799SAl Viro #include <asm/unistd.h>
5c0803799SAl Viro 
6c0803799SAl Viro static unsigned dir_class[] = {
7c0803799SAl Viro #include <asm-generic/audit_dir_write.h>
8c0803799SAl Viro ~0U
9c0803799SAl Viro };
10c0803799SAl Viro 
11dc104fb3SAl Viro static unsigned read_class[] = {
12dc104fb3SAl Viro #include <asm-generic/audit_read.h>
13dc104fb3SAl Viro ~0U
14dc104fb3SAl Viro };
15dc104fb3SAl Viro 
16dc104fb3SAl Viro static unsigned write_class[] = {
17dc104fb3SAl Viro #include <asm-generic/audit_write.h>
18dc104fb3SAl Viro ~0U
19dc104fb3SAl Viro };
20dc104fb3SAl Viro 
21c0803799SAl Viro static unsigned chattr_class[] = {
22c0803799SAl Viro #include <asm-generic/audit_change_attr.h>
23c0803799SAl Viro ~0U
24c0803799SAl Viro };
25c0803799SAl Viro 
26*7f13da40SAmy Griffis static unsigned signal_class[] = {
27*7f13da40SAmy Griffis #include <asm-generic/audit_signal.h>
28*7f13da40SAmy Griffis ~0U
29*7f13da40SAmy Griffis };
30*7f13da40SAmy Griffis 
3155669bfaSAl Viro int audit_classify_syscall(int abi, unsigned syscall)
3255669bfaSAl Viro {
3355669bfaSAl Viro #ifdef CONFIG_PPC64
3455669bfaSAl Viro 	extern int ppc32_classify_syscall(unsigned);
3555669bfaSAl Viro 	if (abi == AUDIT_ARCH_PPC)
3655669bfaSAl Viro 		return ppc32_classify_syscall(syscall);
3755669bfaSAl Viro #endif
3855669bfaSAl Viro 	switch(syscall) {
3955669bfaSAl Viro 	case __NR_open:
4055669bfaSAl Viro 		return 2;
4155669bfaSAl Viro 	case __NR_openat:
4255669bfaSAl Viro 		return 3;
4355669bfaSAl Viro 	case __NR_socketcall:
4455669bfaSAl Viro 		return 4;
4555669bfaSAl Viro 	case __NR_execve:
4655669bfaSAl Viro 		return 5;
4755669bfaSAl Viro 	default:
4855669bfaSAl Viro 		return 0;
4955669bfaSAl Viro 	}
5055669bfaSAl Viro }
5155669bfaSAl Viro 
52c0803799SAl Viro static int __init audit_classes_init(void)
53c0803799SAl Viro {
54c0803799SAl Viro #ifdef CONFIG_PPC64
55c0803799SAl Viro 	extern __u32 ppc32_dir_class[];
56dc104fb3SAl Viro 	extern __u32 ppc32_write_class[];
57dc104fb3SAl Viro 	extern __u32 ppc32_read_class[];
58c0803799SAl Viro 	extern __u32 ppc32_chattr_class[];
59*7f13da40SAmy Griffis 	extern __u32 ppc32_signal_class[];
60dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class);
61dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class);
62c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
63c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
64*7f13da40SAmy Griffis 	audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class);
65c0803799SAl Viro #endif
66dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_WRITE, write_class);
67dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_READ, read_class);
68c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
69c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
70*7f13da40SAmy Griffis 	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
71c0803799SAl Viro 	return 0;
72c0803799SAl Viro }
73c0803799SAl Viro 
74c0803799SAl Viro __initcall(audit_classes_init);
75