xref: /openbmc/linux/arch/powerpc/kernel/audit.c (revision 55669bfa141b488be865341ed12e188967d11308)
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*55669bfaSAl Viro int audit_classify_syscall(int abi, unsigned syscall)
27*55669bfaSAl Viro {
28*55669bfaSAl Viro #ifdef CONFIG_PPC64
29*55669bfaSAl Viro 	extern int ppc32_classify_syscall(unsigned);
30*55669bfaSAl Viro 	if (abi == AUDIT_ARCH_PPC)
31*55669bfaSAl Viro 		return ppc32_classify_syscall(syscall);
32*55669bfaSAl Viro #endif
33*55669bfaSAl Viro 	switch(syscall) {
34*55669bfaSAl Viro 	case __NR_open:
35*55669bfaSAl Viro 		return 2;
36*55669bfaSAl Viro 	case __NR_openat:
37*55669bfaSAl Viro 		return 3;
38*55669bfaSAl Viro 	case __NR_socketcall:
39*55669bfaSAl Viro 		return 4;
40*55669bfaSAl Viro 	case __NR_execve:
41*55669bfaSAl Viro 		return 5;
42*55669bfaSAl Viro 	default:
43*55669bfaSAl Viro 		return 0;
44*55669bfaSAl Viro 	}
45*55669bfaSAl Viro }
46*55669bfaSAl Viro 
47c0803799SAl Viro static int __init audit_classes_init(void)
48c0803799SAl Viro {
49c0803799SAl Viro #ifdef CONFIG_PPC64
50c0803799SAl Viro 	extern __u32 ppc32_dir_class[];
51dc104fb3SAl Viro 	extern __u32 ppc32_write_class[];
52dc104fb3SAl Viro 	extern __u32 ppc32_read_class[];
53c0803799SAl Viro 	extern __u32 ppc32_chattr_class[];
54dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class);
55dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class);
56c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
57c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
58c0803799SAl Viro #endif
59dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_WRITE, write_class);
60dc104fb3SAl Viro 	audit_register_class(AUDIT_CLASS_READ, read_class);
61c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
62c0803799SAl Viro 	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
63c0803799SAl Viro 	return 0;
64c0803799SAl Viro }
65c0803799SAl Viro 
66c0803799SAl Viro __initcall(audit_classes_init);
67