83 lines · 1.9 KB · C
RawDownload
// SPDX-License-Identifier: GPL-2.0#include <linux/init.h>#include <linux/types.h>#include <linux/audit.h>#include <asm/unistd.h> static unsigned dir_class[] = {#include <asm-generic/audit_dir_write.h>~0U}; static unsigned read_class[] = {#include <asm-generic/audit_read.h>~0U}; static unsigned write_class[] = {#include <asm-generic/audit_write.h>~0U}; static unsigned chattr_class[] = {#include <asm-generic/audit_change_attr.h>~0U}; static unsigned signal_class[] = {#include <asm-generic/audit_signal.h>~0U}; int audit_classify_arch(int arch){#ifdef CONFIG_COMPAT	if (arch == AUDIT_ARCH_PARISC)		return 1;#endif	return 0;} int audit_classify_syscall(int abi, unsigned syscall){	switch (syscall) {	case __NR_open:		return AUDITSC_OPEN;	case __NR_openat:		return AUDITSC_OPENAT;	case __NR_execve:		return AUDITSC_EXECVE;	case __NR_openat2:		return AUDITSC_OPENAT2;	default:#ifdef CONFIG_COMPAT		if (abi == AUDIT_ARCH_PARISC)			return AUDITSC_COMPAT;#endif		return AUDITSC_NATIVE;	}} static int __init audit_classes_init(void){#ifdef CONFIG_COMPAT	extern __u32 parisc32_dir_class[];	extern __u32 parisc32_write_class[];	extern __u32 parisc32_read_class[];	extern __u32 parisc32_chattr_class[];	extern __u32 parisc32_signal_class[];	audit_register_class(AUDIT_CLASS_WRITE_32, parisc32_write_class);	audit_register_class(AUDIT_CLASS_READ_32, parisc32_read_class);	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, parisc32_dir_class);	audit_register_class(AUDIT_CLASS_CHATTR_32, parisc32_chattr_class);	audit_register_class(AUDIT_CLASS_SIGNAL_32, parisc32_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);	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);	return 0;} __initcall(audit_classes_init);