aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmy Griffis <amy.griffis@hp.com>2007-03-29 18:00:37 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2007-05-11 05:38:25 -0400
commit7f13da40e36c84d0d046b7adbd060af7d3717250 (patch)
tree3cf0c58f674be94a7237734367ee5c04a5f223bc
parenta5cb013da773a67ee48d1c19e96436c22a73a7eb (diff)
[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>
-rw-r--r--arch/ia64/ia32/audit.c5
-rw-r--r--arch/ia64/kernel/audit.c8
-rw-r--r--arch/powerpc/kernel/audit.c8
-rw-r--r--arch/powerpc/kernel/compat_audit.c5
-rw-r--r--arch/s390/kernel/audit.c8
-rw-r--r--arch/s390/kernel/compat_audit.c5
-rw-r--r--arch/sparc64/kernel/audit.c8
-rw-r--r--arch/sparc64/kernel/compat_audit.c5
-rw-r--r--arch/x86_64/ia32/audit.c5
-rw-r--r--arch/x86_64/kernel/audit.c8
-rw-r--r--include/asm-generic/audit_signal.h3
-rw-r--r--include/linux/audit.h2
-rw-r--r--lib/audit.c6
13 files changed, 76 insertions, 0 deletions
diff --git a/arch/ia64/ia32/audit.c b/arch/ia64/ia32/audit.c
index 92d7d0c8d93f..8850fe40ea34 100644
--- a/arch/ia64/ia32/audit.c
+++ b/arch/ia64/ia32/audit.c
@@ -20,6 +20,11 @@ unsigned ia32_read_class[] = {
20~0U 20~0U
21}; 21};
22 22
23unsigned ia32_signal_class[] = {
24#include <asm-generic/audit_signal.h>
25~0U
26};
27
23int ia32_classify_syscall(unsigned syscall) 28int ia32_classify_syscall(unsigned syscall)
24{ 29{
25 switch(syscall) { 30 switch(syscall) {
diff --git a/arch/ia64/kernel/audit.c b/arch/ia64/kernel/audit.c
index 04682555a28c..538312adc53b 100644
--- a/arch/ia64/kernel/audit.c
+++ b/arch/ia64/kernel/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28#ifdef CONFIG_IA32_SUPPORT 33#ifdef CONFIG_IA32_SUPPORT
@@ -49,15 +54,18 @@ static int __init audit_classes_init(void)
49 extern __u32 ia32_write_class[]; 54 extern __u32 ia32_write_class[];
50 extern __u32 ia32_read_class[]; 55 extern __u32 ia32_read_class[];
51 extern __u32 ia32_chattr_class[]; 56 extern __u32 ia32_chattr_class[];
57 extern __u32 ia32_signal_class[];
52 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); 58 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
53 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); 59 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
54 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); 60 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
55 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); 61 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
62 audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
56#endif 63#endif
57 audit_register_class(AUDIT_CLASS_WRITE, write_class); 64 audit_register_class(AUDIT_CLASS_WRITE, write_class);
58 audit_register_class(AUDIT_CLASS_READ, read_class); 65 audit_register_class(AUDIT_CLASS_READ, read_class);
59 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 66 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
60 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 67 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
68 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
61 return 0; 69 return 0;
62} 70}
63 71
diff --git a/arch/powerpc/kernel/audit.c b/arch/powerpc/kernel/audit.c
index 7fe5e6300e9a..66d54bada0bf 100644
--- a/arch/powerpc/kernel/audit.c
+++ b/arch/powerpc/kernel/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28#ifdef CONFIG_PPC64 33#ifdef CONFIG_PPC64
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
51 extern __u32 ppc32_write_class[]; 56 extern __u32 ppc32_write_class[];
52 extern __u32 ppc32_read_class[]; 57 extern __u32 ppc32_read_class[];
53 extern __u32 ppc32_chattr_class[]; 58 extern __u32 ppc32_chattr_class[];
59 extern __u32 ppc32_signal_class[];
54 audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class); 60 audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class);
55 audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class); 61 audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class);
56 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); 62 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
57 audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); 63 audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
64 audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class);
58#endif 65#endif
59 audit_register_class(AUDIT_CLASS_WRITE, write_class); 66 audit_register_class(AUDIT_CLASS_WRITE, write_class);
60 audit_register_class(AUDIT_CLASS_READ, read_class); 67 audit_register_class(AUDIT_CLASS_READ, read_class);
61 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 68 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
62 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 69 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
70 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
63 return 0; 71 return 0;
64} 72}
65 73
diff --git a/arch/powerpc/kernel/compat_audit.c b/arch/powerpc/kernel/compat_audit.c
index 640d4bb29321..108ff14e2122 100644
--- a/arch/powerpc/kernel/compat_audit.c
+++ b/arch/powerpc/kernel/compat_audit.c
@@ -21,6 +21,11 @@ unsigned ppc32_read_class[] = {
21~0U 21~0U
22}; 22};
23 23
24unsigned ppc32_signal_class[] = {
25#include <asm-generic/audit_signal.h>
26~0U
27};
28
24int ppc32_classify_syscall(unsigned syscall) 29int ppc32_classify_syscall(unsigned syscall)
25{ 30{
26 switch(syscall) { 31 switch(syscall) {
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c
index 0741d9193390..7affafe626d2 100644
--- a/arch/s390/kernel/audit.c
+++ b/arch/s390/kernel/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28#ifdef CONFIG_COMPAT 33#ifdef CONFIG_COMPAT
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
51 extern __u32 s390_write_class[]; 56 extern __u32 s390_write_class[];
52 extern __u32 s390_read_class[]; 57 extern __u32 s390_read_class[];
53 extern __u32 s390_chattr_class[]; 58 extern __u32 s390_chattr_class[];
59 extern __u32 s390_signal_class[];
54 audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); 60 audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class);
55 audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); 61 audit_register_class(AUDIT_CLASS_READ_32, s390_read_class);
56 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); 62 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class);
57 audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); 63 audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class);
64 audit_register_class(AUDIT_CLASS_SIGNAL_32, s390_signal_class);
58#endif 65#endif
59 audit_register_class(AUDIT_CLASS_WRITE, write_class); 66 audit_register_class(AUDIT_CLASS_WRITE, write_class);
60 audit_register_class(AUDIT_CLASS_READ, read_class); 67 audit_register_class(AUDIT_CLASS_READ, read_class);
61 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 68 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
62 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 69 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
70 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
63 return 0; 71 return 0;
64} 72}
65 73
diff --git a/arch/s390/kernel/compat_audit.c b/arch/s390/kernel/compat_audit.c
index 16d9436bfa91..0569f5126e49 100644
--- a/arch/s390/kernel/compat_audit.c
+++ b/arch/s390/kernel/compat_audit.c
@@ -21,6 +21,11 @@ unsigned s390_read_class[] = {
21~0U 21~0U
22}; 22};
23 23
24unsigned s390_signal_class[] = {
25#include <asm-generic/audit_signal.h>
26~0U
27};
28
24int s390_classify_syscall(unsigned syscall) 29int s390_classify_syscall(unsigned syscall)
25{ 30{
26 switch(syscall) { 31 switch(syscall) {
diff --git a/arch/sparc64/kernel/audit.c b/arch/sparc64/kernel/audit.c
index aef19cc27072..d57a9dad0ab7 100644
--- a/arch/sparc64/kernel/audit.c
+++ b/arch/sparc64/kernel/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28#ifdef CONFIG_SPARC32_COMPAT 33#ifdef CONFIG_SPARC32_COMPAT
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
51 extern __u32 sparc32_write_class[]; 56 extern __u32 sparc32_write_class[];
52 extern __u32 sparc32_read_class[]; 57 extern __u32 sparc32_read_class[];
53 extern __u32 sparc32_chattr_class[]; 58 extern __u32 sparc32_chattr_class[];
59 extern __u32 sparc32_signal_class[];
54 audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); 60 audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
55 audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); 61 audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
56 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); 62 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
57 audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); 63 audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
64 audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class);
58#endif 65#endif
59 audit_register_class(AUDIT_CLASS_WRITE, write_class); 66 audit_register_class(AUDIT_CLASS_WRITE, write_class);
60 audit_register_class(AUDIT_CLASS_READ, read_class); 67 audit_register_class(AUDIT_CLASS_READ, read_class);
61 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 68 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
62 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 69 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
70 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
63 return 0; 71 return 0;
64} 72}
65 73
diff --git a/arch/sparc64/kernel/compat_audit.c b/arch/sparc64/kernel/compat_audit.c
index cca96c91b780..c1979482aa92 100644
--- a/arch/sparc64/kernel/compat_audit.c
+++ b/arch/sparc64/kernel/compat_audit.c
@@ -20,6 +20,11 @@ unsigned sparc32_read_class[] = {
20~0U 20~0U
21}; 21};
22 22
23unsigned sparc32_signal_class[] = {
24#include <asm-generic/audit_signal.h>
25~0U
26};
27
23int sparc32_classify_syscall(unsigned syscall) 28int sparc32_classify_syscall(unsigned syscall)
24{ 29{
25 switch(syscall) { 30 switch(syscall) {
diff --git a/arch/x86_64/ia32/audit.c b/arch/x86_64/ia32/audit.c
index 92d7d0c8d93f..8850fe40ea34 100644
--- a/arch/x86_64/ia32/audit.c
+++ b/arch/x86_64/ia32/audit.c
@@ -20,6 +20,11 @@ unsigned ia32_read_class[] = {
20~0U 20~0U
21}; 21};
22 22
23unsigned ia32_signal_class[] = {
24#include <asm-generic/audit_signal.h>
25~0U
26};
27
23int ia32_classify_syscall(unsigned syscall) 28int ia32_classify_syscall(unsigned syscall)
24{ 29{
25 switch(syscall) { 30 switch(syscall) {
diff --git a/arch/x86_64/kernel/audit.c b/arch/x86_64/kernel/audit.c
index 21f33387bef3..b970de66ee59 100644
--- a/arch/x86_64/kernel/audit.c
+++ b/arch/x86_64/kernel/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28#ifdef CONFIG_IA32_EMULATION 33#ifdef CONFIG_IA32_EMULATION
@@ -49,15 +54,18 @@ static int __init audit_classes_init(void)
49 extern __u32 ia32_write_class[]; 54 extern __u32 ia32_write_class[];
50 extern __u32 ia32_read_class[]; 55 extern __u32 ia32_read_class[];
51 extern __u32 ia32_chattr_class[]; 56 extern __u32 ia32_chattr_class[];
57 extern __u32 ia32_signal_class[];
52 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); 58 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
53 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); 59 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
54 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); 60 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
55 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); 61 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
62 audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
56#endif 63#endif
57 audit_register_class(AUDIT_CLASS_WRITE, write_class); 64 audit_register_class(AUDIT_CLASS_WRITE, write_class);
58 audit_register_class(AUDIT_CLASS_READ, read_class); 65 audit_register_class(AUDIT_CLASS_READ, read_class);
59 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 66 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
60 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 67 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
68 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
61 return 0; 69 return 0;
62} 70}
63 71
diff --git a/include/asm-generic/audit_signal.h b/include/asm-generic/audit_signal.h
new file mode 100644
index 000000000000..6feab7f18a53
--- /dev/null
+++ b/include/asm-generic/audit_signal.h
@@ -0,0 +1,3 @@
1__NR_kill,
2__NR_tgkill,
3__NR_tkill,
diff --git a/include/linux/audit.h b/include/linux/audit.h
index f93ce78cecbb..f165308254dc 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -149,6 +149,8 @@
149#define AUDIT_CLASS_READ_32 5 149#define AUDIT_CLASS_READ_32 5
150#define AUDIT_CLASS_WRITE 6 150#define AUDIT_CLASS_WRITE 6
151#define AUDIT_CLASS_WRITE_32 7 151#define AUDIT_CLASS_WRITE_32 7
152#define AUDIT_CLASS_SIGNAL 8
153#define AUDIT_CLASS_SIGNAL_32 9
152 154
153/* This bitmask is used to validate user input. It represents all bits that 155/* This bitmask is used to validate user input. It represents all bits that
154 * are currently used in an audit field constant understood by the kernel. 156 * are currently used in an audit field constant understood by the kernel.
diff --git a/lib/audit.c b/lib/audit.c
index 3b1289fadf06..50e915258515 100644
--- a/lib/audit.c
+++ b/lib/audit.c
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
23~0U 23~0U
24}; 24};
25 25
26static unsigned signal_class[] = {
27#include <asm-generic/audit_signal.h>
28~0U
29};
30
26int audit_classify_syscall(int abi, unsigned syscall) 31int audit_classify_syscall(int abi, unsigned syscall)
27{ 32{
28 switch(syscall) { 33 switch(syscall) {
@@ -49,6 +54,7 @@ static int __init audit_classes_init(void)
49 audit_register_class(AUDIT_CLASS_READ, read_class); 54 audit_register_class(AUDIT_CLASS_READ, read_class);
50 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 55 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
51 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 56 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
57 audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
52 return 0; 58 return 0;
53} 59}
54 60