0001
0002 #include <linux/init.h>
0003 #include <linux/types.h>
0004 #include <linux/audit.h>
0005 #include <asm/unistd.h>
0006
0007 #include "kernel.h"
0008
0009 static unsigned int dir_class[] = {
0010 #include <asm-generic/audit_dir_write.h>
0011 ~0U
0012 };
0013
0014 static unsigned int read_class[] = {
0015 #include <asm-generic/audit_read.h>
0016 ~0U
0017 };
0018
0019 static unsigned int write_class[] = {
0020 #include <asm-generic/audit_write.h>
0021 ~0U
0022 };
0023
0024 static unsigned int chattr_class[] = {
0025 #include <asm-generic/audit_change_attr.h>
0026 ~0U
0027 };
0028
0029 static unsigned int signal_class[] = {
0030 #include <asm-generic/audit_signal.h>
0031 ~0U
0032 };
0033
0034 int audit_classify_arch(int arch)
0035 {
0036 #ifdef CONFIG_COMPAT
0037 if (arch == AUDIT_ARCH_SPARC)
0038 return 1;
0039 #endif
0040 return 0;
0041 }
0042
0043 int audit_classify_syscall(int abi, unsigned int syscall)
0044 {
0045 #ifdef CONFIG_COMPAT
0046 if (abi == AUDIT_ARCH_SPARC)
0047 return sparc32_classify_syscall(syscall);
0048 #endif
0049 switch(syscall) {
0050 case __NR_open:
0051 return AUDITSC_OPEN;
0052 case __NR_openat:
0053 return AUDITSC_OPENAT;
0054 case __NR_socketcall:
0055 return AUDITSC_SOCKETCALL;
0056 case __NR_execve:
0057 return AUDITSC_EXECVE;
0058 case __NR_openat2:
0059 return AUDITSC_OPENAT2;
0060 default:
0061 return AUDITSC_NATIVE;
0062 }
0063 }
0064
0065 static int __init audit_classes_init(void)
0066 {
0067 #ifdef CONFIG_COMPAT
0068 audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
0069 audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
0070 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
0071 audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
0072 audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class);
0073 #endif
0074 audit_register_class(AUDIT_CLASS_WRITE, write_class);
0075 audit_register_class(AUDIT_CLASS_READ, read_class);
0076 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
0077 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
0078 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
0079 return 0;
0080 }
0081
0082 __initcall(audit_classes_init);