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