cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

audit.c (1881B)


      1// SPDX-License-Identifier: GPL-2.0
      2#include <linux/init.h>
      3#include <linux/types.h>
      4#include <linux/audit.h>
      5#include <asm/unistd.h>
      6
      7#include "kernel.h"
      8
      9static unsigned int dir_class[] = {
     10#include <asm-generic/audit_dir_write.h>
     11~0U
     12};
     13
     14static unsigned int read_class[] = {
     15#include <asm-generic/audit_read.h>
     16~0U
     17};
     18
     19static unsigned int write_class[] = {
     20#include <asm-generic/audit_write.h>
     21~0U
     22};
     23
     24static unsigned int chattr_class[] = {
     25#include <asm-generic/audit_change_attr.h>
     26~0U
     27};
     28
     29static unsigned int signal_class[] = {
     30#include <asm-generic/audit_signal.h>
     31~0U
     32};
     33
     34int audit_classify_arch(int arch)
     35{
     36#ifdef CONFIG_COMPAT
     37	if (arch == AUDIT_ARCH_SPARC)
     38		return 1;
     39#endif
     40	return 0;
     41}
     42
     43int audit_classify_syscall(int abi, unsigned int syscall)
     44{
     45#ifdef CONFIG_COMPAT
     46	if (abi == AUDIT_ARCH_SPARC)
     47		return sparc32_classify_syscall(syscall);
     48#endif
     49	switch(syscall) {
     50	case __NR_open:
     51		return AUDITSC_OPEN;
     52	case __NR_openat:
     53		return AUDITSC_OPENAT;
     54	case __NR_socketcall:
     55		return AUDITSC_SOCKETCALL;
     56	case __NR_execve:
     57		return AUDITSC_EXECVE;
     58	case __NR_openat2:
     59		return AUDITSC_OPENAT2;
     60	default:
     61		return AUDITSC_NATIVE;
     62	}
     63}
     64
     65static int __init audit_classes_init(void)
     66{
     67#ifdef CONFIG_COMPAT
     68	audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
     69	audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
     70	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
     71	audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
     72	audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class);
     73#endif
     74	audit_register_class(AUDIT_CLASS_WRITE, write_class);
     75	audit_register_class(AUDIT_CLASS_READ, read_class);
     76	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
     77	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
     78	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
     79	return 0;
     80}
     81
     82__initcall(audit_classes_init);