Commit 7f13da40e36c84d0d046b7adbd060af7d3717250

Authored by Amy Griffis
Committed by Al Viro
1 parent a5cb013da7

[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
... ... @@ -20,6 +20,11 @@
20 20 ~0U
21 21 };
22 22  
  23 +unsigned ia32_signal_class[] = {
  24 +#include <asm-generic/audit_signal.h>
  25 +~0U
  26 +};
  27 +
23 28 int ia32_classify_syscall(unsigned syscall)
24 29 {
25 30 switch(syscall) {
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
... ... @@ -21,6 +21,11 @@
21 21 ~0U
22 22 };
23 23  
  24 +unsigned ppc32_signal_class[] = {
  25 +#include <asm-generic/audit_signal.h>
  26 +~0U
  27 +};
  28 +
24 29 int ppc32_classify_syscall(unsigned syscall)
25 30 {
26 31 switch(syscall) {
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
... ... @@ -21,6 +21,11 @@
21 21 ~0U
22 22 };
23 23  
  24 +unsigned s390_signal_class[] = {
  25 +#include <asm-generic/audit_signal.h>
  26 +~0U
  27 +};
  28 +
24 29 int s390_classify_syscall(unsigned syscall)
25 30 {
26 31 switch(syscall) {
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
... ... @@ -20,6 +20,11 @@
20 20 ~0U
21 21 };
22 22  
  23 +unsigned sparc32_signal_class[] = {
  24 +#include <asm-generic/audit_signal.h>
  25 +~0U
  26 +};
  27 +
23 28 int sparc32_classify_syscall(unsigned syscall)
24 29 {
25 30 switch(syscall) {
arch/x86_64/ia32/audit.c
... ... @@ -20,6 +20,11 @@
20 20 ~0U
21 21 };
22 22  
  23 +unsigned ia32_signal_class[] = {
  24 +#include <asm-generic/audit_signal.h>
  25 +~0U
  26 +};
  27 +
23 28 int ia32_classify_syscall(unsigned syscall)
24 29 {
25 30 switch(syscall) {
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
  1 +__NR_kill,
  2 +__NR_tgkill,
  3 +__NR_tkill,
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.
... ... @@ -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