Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
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);