1 #include <linux/init.h> 1 #include <linux/init.h> 2 #include <linux/types.h> 2 #include <linux/types.h> 3 #include <linux/audit.h> 3 #include <linux/audit.h> 4 #include <asm/unistd.h> 4 #include <asm/unistd.h> 5 5 6 static unsigned dir_class[] = { !! 6 #include "kernel.h" >> 7 >> 8 static unsigned int dir_class[] = { 7 #include <asm-generic/audit_dir_write.h> 9 #include <asm-generic/audit_dir_write.h> 8 ~0U 10 ~0U 9 }; 11 }; 10 12 11 static unsigned read_class[] = { !! 13 static unsigned int read_class[] = { 12 #include <asm-generic/audit_read.h> 14 #include <asm-generic/audit_read.h> 13 ~0U 15 ~0U 14 }; 16 }; 15 17 16 static unsigned write_class[] = { !! 18 static unsigned int write_class[] = { 17 #include <asm-generic/audit_write.h> 19 #include <asm-generic/audit_write.h> 18 ~0U 20 ~0U 19 }; 21 }; 20 22 21 static unsigned chattr_class[] = { !! 23 static unsigned int chattr_class[] = { 22 #include <asm-generic/audit_change_attr.h> 24 #include <asm-generic/audit_change_attr.h> 23 ~0U 25 ~0U 24 }; 26 }; 25 27 26 static unsigned signal_class[] = { !! 28 static unsigned int signal_class[] = { 27 #include <asm-generic/audit_signal.h> 29 #include <asm-generic/audit_signal.h> 28 ~0U 30 ~0U 29 }; 31 }; 30 32 31 int audit_classify_arch(int arch) 33 int audit_classify_arch(int arch) 32 { 34 { >> 35 #ifdef CONFIG_COMPAT >> 36 if (arch == AUDIT_ARCH_SPARC) >> 37 return 1; >> 38 #endif 33 return 0; 39 return 0; 34 } 40 } 35 41 36 int audit_classify_syscall(int abi, unsigned s !! 42 int audit_classify_syscall(int abi, unsigned int syscall) 37 { 43 { >> 44 #ifdef CONFIG_COMPAT >> 45 if (abi == AUDIT_ARCH_SPARC) >> 46 return sparc32_classify_syscall(syscall); >> 47 #endif 38 switch(syscall) { 48 switch(syscall) { 39 case __NR_open: 49 case __NR_open: 40 return AUDITSC_OPEN; !! 50 return 2; 41 case __NR_openat: 51 case __NR_openat: 42 return AUDITSC_OPENAT; !! 52 return 3; >> 53 case __NR_socketcall: >> 54 return 4; 43 case __NR_execve: 55 case __NR_execve: 44 return AUDITSC_EXECVE; !! 56 return 5; 45 case __NR_openat2: << 46 return AUDITSC_OPENAT2; << 47 default: 57 default: 48 return AUDITSC_NATIVE; !! 58 return 0; 49 } 59 } 50 } 60 } 51 61 52 static int __init audit_classes_init(void) 62 static int __init audit_classes_init(void) 53 { 63 { >> 64 #ifdef CONFIG_COMPAT >> 65 audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); >> 66 audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); >> 67 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); >> 68 audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); >> 69 audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class); >> 70 #endif 54 audit_register_class(AUDIT_CLASS_WRITE 71 audit_register_class(AUDIT_CLASS_WRITE, write_class); 55 audit_register_class(AUDIT_CLASS_READ, 72 audit_register_class(AUDIT_CLASS_READ, read_class); 56 audit_register_class(AUDIT_CLASS_DIR_W 73 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 57 audit_register_class(AUDIT_CLASS_CHATT 74 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 58 audit_register_class(AUDIT_CLASS_SIGNA 75 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 59 return 0; 76 return 0; 60 } 77 } 61 78 62 __initcall(audit_classes_init); 79 __initcall(audit_classes_init); 63 80
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.