Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[firefly-linux-kernel-4.4.55.git] / lib / audit.c
index 76bbed4a20e55d85ebdfc32881d436ee98592f4f..b8fb5ee81e26efc3a9a1457b6f4423046750d869 100644 (file)
@@ -30,11 +30,17 @@ static unsigned signal_class[] = {
 
 int audit_classify_arch(int arch)
 {
-       return 0;
+       if (audit_is_compat(arch))
+               return 1;
+       else
+               return 0;
 }
 
 int audit_classify_syscall(int abi, unsigned syscall)
 {
+       if (audit_is_compat(abi))
+               return audit_classify_compat_syscall(abi, syscall);
+
        switch(syscall) {
 #ifdef __NR_open
        case __NR_open:
@@ -47,6 +53,9 @@ int audit_classify_syscall(int abi, unsigned syscall)
 #ifdef __NR_socketcall
        case __NR_socketcall:
                return 4;
+#endif
+#ifdef __NR_execveat
+       case __NR_execveat:
 #endif
        case __NR_execve:
                return 5;
@@ -57,6 +66,13 @@ int audit_classify_syscall(int abi, unsigned syscall)
 
 static int __init audit_classes_init(void)
 {
+#ifdef CONFIG_AUDIT_COMPAT_GENERIC
+       audit_register_class(AUDIT_CLASS_WRITE_32, compat_write_class);
+       audit_register_class(AUDIT_CLASS_READ_32, compat_read_class);
+       audit_register_class(AUDIT_CLASS_DIR_WRITE_32, compat_dir_class);
+       audit_register_class(AUDIT_CLASS_CHATTR_32, compat_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, compat_signal_class);
+#endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);