• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  static unsigned dir_class[] = {
8  #include <asm-generic/audit_dir_write.h>
9  ~0U
10  };
11  
12  static unsigned read_class[] = {
13  #include <asm-generic/audit_read.h>
14  ~0U
15  };
16  
17  static unsigned write_class[] = {
18  #include <asm-generic/audit_write.h>
19  ~0U
20  };
21  
22  static unsigned chattr_class[] = {
23  #include <asm-generic/audit_change_attr.h>
24  ~0U
25  };
26  
27  static unsigned signal_class[] = {
28  #include <asm-generic/audit_signal.h>
29  ~0U
30  };
31  
audit_classify_arch(int arch)32  int audit_classify_arch(int arch)
33  {
34  #ifdef CONFIG_PPC64
35  	if (arch == AUDIT_ARCH_PPC)
36  		return 1;
37  #endif
38  	return 0;
39  }
40  
audit_classify_syscall(int abi,unsigned syscall)41  int audit_classify_syscall(int abi, unsigned syscall)
42  {
43  #ifdef CONFIG_PPC64
44  	extern int ppc32_classify_syscall(unsigned);
45  	if (abi == AUDIT_ARCH_PPC)
46  		return ppc32_classify_syscall(syscall);
47  #endif
48  	switch(syscall) {
49  	case __NR_open:
50  		return 2;
51  	case __NR_openat:
52  		return 3;
53  	case __NR_socketcall:
54  		return 4;
55  	case __NR_execve:
56  		return 5;
57  	default:
58  		return 0;
59  	}
60  }
61  
audit_classes_init(void)62  static int __init audit_classes_init(void)
63  {
64  #ifdef CONFIG_PPC64
65  	extern __u32 ppc32_dir_class[];
66  	extern __u32 ppc32_write_class[];
67  	extern __u32 ppc32_read_class[];
68  	extern __u32 ppc32_chattr_class[];
69  	extern __u32 ppc32_signal_class[];
70  	audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class);
71  	audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class);
72  	audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
73  	audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
74  	audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class);
75  #endif
76  	audit_register_class(AUDIT_CLASS_WRITE, write_class);
77  	audit_register_class(AUDIT_CLASS_READ, read_class);
78  	audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
79  	audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
80  	audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
81  	return 0;
82  }
83  
84  __initcall(audit_classes_init);
85