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 #include <asm/audit.h>
0007 
0008 static unsigned dir_class[] = {
0009 #include <asm-generic/audit_dir_write.h>
0010 ~0U
0011 };
0012 
0013 static unsigned read_class[] = {
0014 #include <asm-generic/audit_read.h>
0015 ~0U
0016 };
0017 
0018 static unsigned write_class[] = {
0019 #include <asm-generic/audit_write.h>
0020 ~0U
0021 };
0022 
0023 static unsigned chattr_class[] = {
0024 #include <asm-generic/audit_change_attr.h>
0025 ~0U
0026 };
0027 
0028 static unsigned signal_class[] = {
0029 #include <asm-generic/audit_signal.h>
0030 ~0U
0031 };
0032 
0033 int audit_classify_arch(int arch)
0034 {
0035 #ifdef CONFIG_IA32_EMULATION
0036     if (arch == AUDIT_ARCH_I386)
0037         return 1;
0038 #endif
0039     return 0;
0040 }
0041 
0042 int audit_classify_syscall(int abi, unsigned syscall)
0043 {
0044 #ifdef CONFIG_IA32_EMULATION
0045     if (abi == AUDIT_ARCH_I386)
0046         return ia32_classify_syscall(syscall);
0047 #endif
0048     switch(syscall) {
0049     case __NR_open:
0050         return AUDITSC_OPEN;
0051     case __NR_openat:
0052         return AUDITSC_OPENAT;
0053     case __NR_execve:
0054     case __NR_execveat:
0055         return AUDITSC_EXECVE;
0056     case __NR_openat2:
0057         return AUDITSC_OPENAT2;
0058     default:
0059         return AUDITSC_NATIVE;
0060     }
0061 }
0062 
0063 static int __init audit_classes_init(void)
0064 {
0065 #ifdef CONFIG_IA32_EMULATION
0066     extern __u32 ia32_dir_class[];
0067     extern __u32 ia32_write_class[];
0068     extern __u32 ia32_read_class[];
0069     extern __u32 ia32_chattr_class[];
0070     extern __u32 ia32_signal_class[];
0071     audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
0072     audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
0073     audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
0074     audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
0075     audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
0076 #endif
0077     audit_register_class(AUDIT_CLASS_WRITE, write_class);
0078     audit_register_class(AUDIT_CLASS_READ, read_class);
0079     audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
0080     audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
0081     audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
0082     return 0;
0083 }
0084 
0085 __initcall(audit_classes_init);