90 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <linux/init.h>3#include <linux/types.h>4#include <linux/audit.h>5#include <asm/unistd.h>6 7static unsigned dir_class[] = {8#include <asm-generic/audit_dir_write.h>9~0U10};11 12static unsigned read_class[] = {13#include <asm-generic/audit_read.h>14~0U15};16 17static unsigned write_class[] = {18#include <asm-generic/audit_write.h>19~0U20};21 22static unsigned chattr_class[] = {23#include <asm-generic/audit_change_attr.h>24~0U25};26 27static unsigned signal_class[] = {28#include <asm-generic/audit_signal.h>29~0U30};31 32int audit_classify_arch(int arch)33{34 if (audit_is_compat(arch))35 return 1;36 else37 return 0;38}39 40int audit_classify_syscall(int abi, unsigned syscall)41{42 if (audit_is_compat(abi))43 return audit_classify_compat_syscall(abi, syscall);44 45 switch(syscall) {46#ifdef __NR_open47 case __NR_open:48 return AUDITSC_OPEN;49#endif50#ifdef __NR_openat51 case __NR_openat:52 return AUDITSC_OPENAT;53#endif54#ifdef __NR_socketcall55 case __NR_socketcall:56 return AUDITSC_SOCKETCALL;57#endif58#ifdef __NR_execveat59 case __NR_execveat:60#endif61 case __NR_execve:62 return AUDITSC_EXECVE;63#ifdef __NR_openat264 case __NR_openat2:65 return AUDITSC_OPENAT2;66#endif67 default:68 return AUDITSC_NATIVE;69 }70}71 72static int __init audit_classes_init(void)73{74#ifdef CONFIG_AUDIT_COMPAT_GENERIC75 audit_register_class(AUDIT_CLASS_WRITE_32, compat_write_class);76 audit_register_class(AUDIT_CLASS_READ_32, compat_read_class);77 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, compat_dir_class);78 audit_register_class(AUDIT_CLASS_CHATTR_32, compat_chattr_class);79 audit_register_class(AUDIT_CLASS_SIGNAL_32, compat_signal_class);80#endif81 audit_register_class(AUDIT_CLASS_WRITE, write_class);82 audit_register_class(AUDIT_CLASS_READ, read_class);83 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);84 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);85 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);86 return 0;87}88 89__initcall(audit_classes_init);90