Commit 7f13da40e36c84d0d046b7adbd060af7d3717250
Committed by
Al Viro
1 parent
a5cb013da7
Exists in
master
and in
4 other branches
[PATCH] add SIGNAL syscall class (v3)
Add a syscall class for sending signals. Signed-off-by: Amy Griffis <amy.griffis@hp.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Showing 13 changed files with 76 additions and 0 deletions Side-by-side Diff
- arch/ia64/ia32/audit.c
- arch/ia64/kernel/audit.c
- arch/powerpc/kernel/audit.c
- arch/powerpc/kernel/compat_audit.c
- arch/s390/kernel/audit.c
- arch/s390/kernel/compat_audit.c
- arch/sparc64/kernel/audit.c
- arch/sparc64/kernel/compat_audit.c
- arch/x86_64/ia32/audit.c
- arch/x86_64/kernel/audit.c
- include/asm-generic/audit_signal.h
- include/linux/audit.h
- lib/audit.c
arch/ia64/ia32/audit.c
arch/ia64/kernel/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | #ifdef CONFIG_IA32_SUPPORT |
29 | 34 | |
30 | 35 | |
... | ... | @@ -49,15 +54,18 @@ |
49 | 54 | extern __u32 ia32_write_class[]; |
50 | 55 | extern __u32 ia32_read_class[]; |
51 | 56 | extern __u32 ia32_chattr_class[]; |
57 | + extern __u32 ia32_signal_class[]; | |
52 | 58 | audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); |
53 | 59 | audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); |
54 | 60 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); |
55 | 61 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); |
62 | + audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class); | |
56 | 63 | #endif |
57 | 64 | audit_register_class(AUDIT_CLASS_WRITE, write_class); |
58 | 65 | audit_register_class(AUDIT_CLASS_READ, read_class); |
59 | 66 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
60 | 67 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
68 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
61 | 69 | return 0; |
62 | 70 | } |
63 | 71 |
arch/powerpc/kernel/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | #ifdef CONFIG_PPC64 |
29 | 34 | |
30 | 35 | |
... | ... | @@ -51,15 +56,18 @@ |
51 | 56 | extern __u32 ppc32_write_class[]; |
52 | 57 | extern __u32 ppc32_read_class[]; |
53 | 58 | extern __u32 ppc32_chattr_class[]; |
59 | + extern __u32 ppc32_signal_class[]; | |
54 | 60 | audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class); |
55 | 61 | audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class); |
56 | 62 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); |
57 | 63 | audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); |
64 | + audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class); | |
58 | 65 | #endif |
59 | 66 | audit_register_class(AUDIT_CLASS_WRITE, write_class); |
60 | 67 | audit_register_class(AUDIT_CLASS_READ, read_class); |
61 | 68 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
62 | 69 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
70 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
63 | 71 | return 0; |
64 | 72 | } |
65 | 73 |
arch/powerpc/kernel/compat_audit.c
arch/s390/kernel/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | #ifdef CONFIG_COMPAT |
29 | 34 | |
30 | 35 | |
... | ... | @@ -51,15 +56,18 @@ |
51 | 56 | extern __u32 s390_write_class[]; |
52 | 57 | extern __u32 s390_read_class[]; |
53 | 58 | extern __u32 s390_chattr_class[]; |
59 | + extern __u32 s390_signal_class[]; | |
54 | 60 | audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); |
55 | 61 | audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); |
56 | 62 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); |
57 | 63 | audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); |
64 | + audit_register_class(AUDIT_CLASS_SIGNAL_32, s390_signal_class); | |
58 | 65 | #endif |
59 | 66 | audit_register_class(AUDIT_CLASS_WRITE, write_class); |
60 | 67 | audit_register_class(AUDIT_CLASS_READ, read_class); |
61 | 68 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
62 | 69 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
70 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
63 | 71 | return 0; |
64 | 72 | } |
65 | 73 |
arch/s390/kernel/compat_audit.c
arch/sparc64/kernel/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | #ifdef CONFIG_SPARC32_COMPAT |
29 | 34 | |
30 | 35 | |
... | ... | @@ -51,15 +56,18 @@ |
51 | 56 | extern __u32 sparc32_write_class[]; |
52 | 57 | extern __u32 sparc32_read_class[]; |
53 | 58 | extern __u32 sparc32_chattr_class[]; |
59 | + extern __u32 sparc32_signal_class[]; | |
54 | 60 | audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); |
55 | 61 | audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); |
56 | 62 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); |
57 | 63 | audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); |
64 | + audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class); | |
58 | 65 | #endif |
59 | 66 | audit_register_class(AUDIT_CLASS_WRITE, write_class); |
60 | 67 | audit_register_class(AUDIT_CLASS_READ, read_class); |
61 | 68 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
62 | 69 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
70 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
63 | 71 | return 0; |
64 | 72 | } |
65 | 73 |
arch/sparc64/kernel/compat_audit.c
arch/x86_64/ia32/audit.c
arch/x86_64/kernel/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | #ifdef CONFIG_IA32_EMULATION |
29 | 34 | |
30 | 35 | |
... | ... | @@ -49,15 +54,18 @@ |
49 | 54 | extern __u32 ia32_write_class[]; |
50 | 55 | extern __u32 ia32_read_class[]; |
51 | 56 | extern __u32 ia32_chattr_class[]; |
57 | + extern __u32 ia32_signal_class[]; | |
52 | 58 | audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); |
53 | 59 | audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); |
54 | 60 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); |
55 | 61 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); |
62 | + audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class); | |
56 | 63 | #endif |
57 | 64 | audit_register_class(AUDIT_CLASS_WRITE, write_class); |
58 | 65 | audit_register_class(AUDIT_CLASS_READ, read_class); |
59 | 66 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
60 | 67 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
68 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
61 | 69 | return 0; |
62 | 70 | } |
63 | 71 |
include/asm-generic/audit_signal.h
include/linux/audit.h
... | ... | @@ -149,6 +149,8 @@ |
149 | 149 | #define AUDIT_CLASS_READ_32 5 |
150 | 150 | #define AUDIT_CLASS_WRITE 6 |
151 | 151 | #define AUDIT_CLASS_WRITE_32 7 |
152 | +#define AUDIT_CLASS_SIGNAL 8 | |
153 | +#define AUDIT_CLASS_SIGNAL_32 9 | |
152 | 154 | |
153 | 155 | /* This bitmask is used to validate user input. It represents all bits that |
154 | 156 | * are currently used in an audit field constant understood by the kernel. |
lib/audit.c
... | ... | @@ -23,6 +23,11 @@ |
23 | 23 | ~0U |
24 | 24 | }; |
25 | 25 | |
26 | +static unsigned signal_class[] = { | |
27 | +#include <asm-generic/audit_signal.h> | |
28 | +~0U | |
29 | +}; | |
30 | + | |
26 | 31 | int audit_classify_syscall(int abi, unsigned syscall) |
27 | 32 | { |
28 | 33 | switch(syscall) { |
... | ... | @@ -49,6 +54,7 @@ |
49 | 54 | audit_register_class(AUDIT_CLASS_READ, read_class); |
50 | 55 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
51 | 56 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
57 | + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); | |
52 | 58 | return 0; |
53 | 59 | } |
54 | 60 |