diff options
-rw-r--r-- | arch/i386/kernel/Makefile | 1 | ||||
-rw-r--r-- | arch/ia64/Kconfig | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 4 | ||||
-rw-r--r-- | arch/s390/Kconfig | 4 | ||||
-rw-r--r-- | arch/sparc64/Kconfig | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/audit.c | 66 | ||||
-rw-r--r-- | arch/sparc64/kernel/compat_audit.c | 37 | ||||
-rw-r--r-- | arch/x86_64/Kconfig | 4 | ||||
-rw-r--r-- | lib/Kconfig | 5 | ||||
-rw-r--r-- | lib/Makefile | 1 | ||||
-rw-r--r-- | lib/audit.c (renamed from arch/i386/kernel/audit.c) | 2 |
12 files changed, 134 insertions, 1 deletions
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index ab98fc21a541..5427a842e841 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
@@ -39,7 +39,6 @@ obj-$(CONFIG_VM86) += vm86.o | |||
39 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 39 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
40 | obj-$(CONFIG_HPET_TIMER) += hpet.o | 40 | obj-$(CONFIG_HPET_TIMER) += hpet.o |
41 | obj-$(CONFIG_K8_NB) += k8.o | 41 | obj-$(CONFIG_K8_NB) += k8.o |
42 | obj-$(CONFIG_AUDIT) += audit.o | ||
43 | 42 | ||
44 | EXTRA_AFLAGS := -traditional | 43 | EXTRA_AFLAGS := -traditional |
45 | 44 | ||
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 674de8943478..db274da7dba1 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -75,6 +75,10 @@ config DMA_IS_NORMAL | |||
75 | depends on IA64_SGI_SN2 | 75 | depends on IA64_SGI_SN2 |
76 | default y | 76 | default y |
77 | 77 | ||
78 | config AUDIT_ARCH | ||
79 | bool | ||
80 | default y | ||
81 | |||
78 | choice | 82 | choice |
79 | prompt "System type" | 83 | prompt "System type" |
80 | default IA64_GENERIC | 84 | default IA64_GENERIC |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 4d4b6fb156e1..694b0c63ee50 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -95,6 +95,10 @@ config GENERIC_TBSYNC | |||
95 | default y if PPC32 && SMP | 95 | default y if PPC32 && SMP |
96 | default n | 96 | default n |
97 | 97 | ||
98 | config AUDIT_ARCH | ||
99 | bool | ||
100 | default y | ||
101 | |||
98 | config DEFAULT_UIMAGE | 102 | config DEFAULT_UIMAGE |
99 | bool | 103 | bool |
100 | help | 104 | help |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index ae071a11ce71..2f4f70c4dbb2 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -118,6 +118,10 @@ config SYSVIPC_COMPAT | |||
118 | depends on COMPAT && SYSVIPC | 118 | depends on COMPAT && SYSVIPC |
119 | default y | 119 | default y |
120 | 120 | ||
121 | config AUDIT_ARCH | ||
122 | bool | ||
123 | default y | ||
124 | |||
121 | comment "Code generation options" | 125 | comment "Code generation options" |
122 | 126 | ||
123 | choice | 127 | choice |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 8a36ba8868db..8d8ca716f7a7 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -34,6 +34,10 @@ config ARCH_MAY_HAVE_PC_FDC | |||
34 | bool | 34 | bool |
35 | default y | 35 | default y |
36 | 36 | ||
37 | config AUDIT_ARCH | ||
38 | bool | ||
39 | default y | ||
40 | |||
37 | choice | 41 | choice |
38 | prompt "Kernel page size" | 42 | prompt "Kernel page size" |
39 | default SPARC64_PAGE_SIZE_8KB | 43 | default SPARC64_PAGE_SIZE_8KB |
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile index 86c9fe3f3e4a..e1eabebaed39 100644 --- a/arch/sparc64/kernel/Makefile +++ b/arch/sparc64/kernel/Makefile | |||
@@ -25,6 +25,9 @@ obj-$(CONFIG_MODULES) += module.o | |||
25 | obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o | 25 | obj-$(CONFIG_US3_FREQ) += us3_cpufreq.o |
26 | obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o | 26 | obj-$(CONFIG_US2E_FREQ) += us2e_cpufreq.o |
27 | obj-$(CONFIG_KPROBES) += kprobes.o | 27 | obj-$(CONFIG_KPROBES) += kprobes.o |
28 | obj-$(CONFIG_AUDIT) += audit.o | ||
29 | obj-$(CONFIG_AUDIT)$(CONFIG_SPARC32_COMPAT) += compat_audit.o | ||
30 | obj-y += $(obj-yy) | ||
28 | 31 | ||
29 | ifdef CONFIG_SUNOS_EMUL | 32 | ifdef CONFIG_SUNOS_EMUL |
30 | obj-y += sys_sunos32.o sunos_ioctl32.o | 33 | obj-y += sys_sunos32.o sunos_ioctl32.o |
diff --git a/arch/sparc64/kernel/audit.c b/arch/sparc64/kernel/audit.c new file mode 100644 index 000000000000..aef19cc27072 --- /dev/null +++ b/arch/sparc64/kernel/audit.c | |||
@@ -0,0 +1,66 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/types.h> | ||
3 | #include <linux/audit.h> | ||
4 | #include <asm/unistd.h> | ||
5 | |||
6 | static unsigned dir_class[] = { | ||
7 | #include <asm-generic/audit_dir_write.h> | ||
8 | ~0U | ||
9 | }; | ||
10 | |||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
21 | static unsigned chattr_class[] = { | ||
22 | #include <asm-generic/audit_change_attr.h> | ||
23 | ~0U | ||
24 | }; | ||
25 | |||
26 | int audit_classify_syscall(int abi, unsigned syscall) | ||
27 | { | ||
28 | #ifdef CONFIG_SPARC32_COMPAT | ||
29 | extern int sparc32_classify_syscall(unsigned); | ||
30 | if (abi == AUDIT_ARCH_SPARC) | ||
31 | return sparc32_classify_syscall(syscall); | ||
32 | #endif | ||
33 | switch(syscall) { | ||
34 | case __NR_open: | ||
35 | return 2; | ||
36 | case __NR_openat: | ||
37 | return 3; | ||
38 | case __NR_socketcall: | ||
39 | return 4; | ||
40 | case __NR_execve: | ||
41 | return 5; | ||
42 | default: | ||
43 | return 0; | ||
44 | } | ||
45 | } | ||
46 | |||
47 | static int __init audit_classes_init(void) | ||
48 | { | ||
49 | #ifdef CONFIG_SPARC32_COMPAT | ||
50 | extern __u32 sparc32_dir_class[]; | ||
51 | extern __u32 sparc32_write_class[]; | ||
52 | extern __u32 sparc32_read_class[]; | ||
53 | extern __u32 sparc32_chattr_class[]; | ||
54 | audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); | ||
55 | audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); | ||
56 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); | ||
57 | audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); | ||
58 | #endif | ||
59 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
60 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
61 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | ||
62 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | ||
63 | return 0; | ||
64 | } | ||
65 | |||
66 | __initcall(audit_classes_init); | ||
diff --git a/arch/sparc64/kernel/compat_audit.c b/arch/sparc64/kernel/compat_audit.c new file mode 100644 index 000000000000..cca96c91b780 --- /dev/null +++ b/arch/sparc64/kernel/compat_audit.c | |||
@@ -0,0 +1,37 @@ | |||
1 | #include <asm-sparc/unistd.h> | ||
2 | |||
3 | unsigned sparc32_dir_class[] = { | ||
4 | #include <asm-generic/audit_dir_write.h> | ||
5 | ~0U | ||
6 | }; | ||
7 | |||
8 | unsigned sparc32_chattr_class[] = { | ||
9 | #include <asm-generic/audit_change_attr.h> | ||
10 | ~0U | ||
11 | }; | ||
12 | |||
13 | unsigned sparc32_write_class[] = { | ||
14 | #include <asm-generic/audit_write.h> | ||
15 | ~0U | ||
16 | }; | ||
17 | |||
18 | unsigned sparc32_read_class[] = { | ||
19 | #include <asm-generic/audit_read.h> | ||
20 | ~0U | ||
21 | }; | ||
22 | |||
23 | int sparc32_classify_syscall(unsigned syscall) | ||
24 | { | ||
25 | switch(syscall) { | ||
26 | case __NR_open: | ||
27 | return 2; | ||
28 | case __NR_openat: | ||
29 | return 3; | ||
30 | case __NR_socketcall: | ||
31 | return 4; | ||
32 | case __NR_execve: | ||
33 | return 5; | ||
34 | default: | ||
35 | return 1; | ||
36 | } | ||
37 | } | ||
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index 28df7d88ce2c..6cd4878625f1 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig | |||
@@ -85,6 +85,10 @@ config DMI | |||
85 | bool | 85 | bool |
86 | default y | 86 | default y |
87 | 87 | ||
88 | config AUDIT_ARCH | ||
89 | bool | ||
90 | default y | ||
91 | |||
88 | source "init/Kconfig" | 92 | source "init/Kconfig" |
89 | 93 | ||
90 | 94 | ||
diff --git a/lib/Kconfig b/lib/Kconfig index f6299342b882..734ce95a93d1 100644 --- a/lib/Kconfig +++ b/lib/Kconfig | |||
@@ -38,6 +38,11 @@ config LIBCRC32C | |||
38 | require M here. See Castagnoli93. | 38 | require M here. See Castagnoli93. |
39 | Module will be libcrc32c. | 39 | Module will be libcrc32c. |
40 | 40 | ||
41 | config AUDIT_GENERIC | ||
42 | bool | ||
43 | depends on AUDIT && !AUDIT_ARCH | ||
44 | default y | ||
45 | |||
41 | # | 46 | # |
42 | # compression support is select'ed if needed | 47 | # compression support is select'ed if needed |
43 | # | 48 | # |
diff --git a/lib/Makefile b/lib/Makefile index be9719ae82d0..ef1d37afbbb6 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
@@ -49,6 +49,7 @@ obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o | |||
49 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o | 49 | obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o |
50 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o | 50 | obj-$(CONFIG_TEXTSEARCH_FSM) += ts_fsm.o |
51 | obj-$(CONFIG_SMP) += percpu_counter.o | 51 | obj-$(CONFIG_SMP) += percpu_counter.o |
52 | obj-$(CONFIG_AUDIT_GENERIC) += audit.o | ||
52 | 53 | ||
53 | obj-$(CONFIG_SWIOTLB) += swiotlb.o | 54 | obj-$(CONFIG_SWIOTLB) += swiotlb.o |
54 | 55 | ||
diff --git a/arch/i386/kernel/audit.c b/lib/audit.c index 3b97cff41549..8c21625ef938 100644 --- a/arch/i386/kernel/audit.c +++ b/lib/audit.c | |||
@@ -30,8 +30,10 @@ int audit_classify_syscall(int abi, unsigned syscall) | |||
30 | return 2; | 30 | return 2; |
31 | case __NR_openat: | 31 | case __NR_openat: |
32 | return 3; | 32 | return 3; |
33 | #ifdef __NR_socketcall | ||
33 | case __NR_socketcall: | 34 | case __NR_socketcall: |
34 | return 4; | 35 | return 4; |
36 | #endif | ||
35 | case __NR_execve: | 37 | case __NR_execve: |
36 | return 5; | 38 | return 5; |
37 | default: | 39 | default: |