[PATCH] add SIGNAL syscall class (v3)
authorAmy Griffis <amy.griffis@hp.com>
Thu, 29 Mar 2007 22:00:37 +0000 (18:00 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 11 May 2007 09:38:25 +0000 (05:38 -0400)
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>
13 files changed:
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 [new file with mode: 0644]
include/linux/audit.h
lib/audit.c

index 92d7d0c8d93fb238dcf32831dcbfc5719078efd6..8850fe40ea34240a340f11e10eb07e6af8641895 100644 (file)
@@ -20,6 +20,11 @@ unsigned ia32_read_class[] = {
 ~0U
 };
 
+unsigned ia32_signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int ia32_classify_syscall(unsigned syscall)
 {
        switch(syscall) {
index 04682555a28c0e81b33feb1492fae2dc9ee05a2c..538312adc53b172941d09ab4d128a5efa57f0c0f 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
 #ifdef CONFIG_IA32_SUPPORT
@@ -49,15 +54,18 @@ static int __init audit_classes_init(void)
        extern __u32 ia32_write_class[];
        extern __u32 ia32_read_class[];
        extern __u32 ia32_chattr_class[];
+       extern __u32 ia32_signal_class[];
        audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
        audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
 #endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }
 
index 7fe5e6300e9a2e2447ef08a5970b53d12743c73f..66d54bada0bf15d53ea41c47f7c25df4fea43e65 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
 #ifdef CONFIG_PPC64
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
        extern __u32 ppc32_write_class[];
        extern __u32 ppc32_read_class[];
        extern __u32 ppc32_chattr_class[];
+       extern __u32 ppc32_signal_class[];
        audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class);
        audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class);
 #endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }
 
index 640d4bb29321b5b20a074e5491aeaada69b021e2..108ff14e21223a0dcd91e7359356e2a602acba0a 100644 (file)
@@ -21,6 +21,11 @@ unsigned ppc32_read_class[] = {
 ~0U
 };
 
+unsigned ppc32_signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int ppc32_classify_syscall(unsigned syscall)
 {
        switch(syscall) {
index 0741d91933906ec1feccc1e335122d7fb244431c..7affafe626d265794cb8501bfba08891b7de9d32 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
 #ifdef CONFIG_COMPAT
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
        extern __u32 s390_write_class[];
        extern __u32 s390_read_class[];
        extern __u32 s390_chattr_class[];
+       extern __u32 s390_signal_class[];
        audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class);
        audit_register_class(AUDIT_CLASS_READ_32, s390_read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, s390_signal_class);
 #endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }
 
index 16d9436bfa9103ab1d3464d5f5f02eec65ca76e0..0569f5126e499ea4bdd477301eeb8e5cc35f42df 100644 (file)
@@ -21,6 +21,11 @@ unsigned s390_read_class[] = {
 ~0U
 };
 
+unsigned s390_signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int s390_classify_syscall(unsigned syscall)
 {
        switch(syscall) {
index aef19cc27072c6f464c9956d20a6fe2ac851d39a..d57a9dad0ab78be12344c9a0cdab4f2e5933f1af 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
 #ifdef CONFIG_SPARC32_COMPAT
@@ -51,15 +56,18 @@ static int __init audit_classes_init(void)
        extern __u32 sparc32_write_class[];
        extern __u32 sparc32_read_class[];
        extern __u32 sparc32_chattr_class[];
+       extern __u32 sparc32_signal_class[];
        audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class);
        audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class);
 #endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }
 
index cca96c91b7807ef42db47b04b0be51b8e9671feb..c1979482aa929bbf85db4a97ca7138365b35bda6 100644 (file)
@@ -20,6 +20,11 @@ unsigned sparc32_read_class[] = {
 ~0U
 };
 
+unsigned sparc32_signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int sparc32_classify_syscall(unsigned syscall)
 {
        switch(syscall) {
index 92d7d0c8d93fb238dcf32831dcbfc5719078efd6..8850fe40ea34240a340f11e10eb07e6af8641895 100644 (file)
@@ -20,6 +20,11 @@ unsigned ia32_read_class[] = {
 ~0U
 };
 
+unsigned ia32_signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int ia32_classify_syscall(unsigned syscall)
 {
        switch(syscall) {
index 21f33387bef3a3427d1bab4cfe924a4bc545391d..b970de66ee5990692f477802926d6f09dd4a4048 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
 #ifdef CONFIG_IA32_EMULATION
@@ -49,15 +54,18 @@ static int __init audit_classes_init(void)
        extern __u32 ia32_write_class[];
        extern __u32 ia32_read_class[];
        extern __u32 ia32_chattr_class[];
+       extern __u32 ia32_signal_class[];
        audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class);
        audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class);
 #endif
        audit_register_class(AUDIT_CLASS_WRITE, write_class);
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }
 
diff --git a/include/asm-generic/audit_signal.h b/include/asm-generic/audit_signal.h
new file mode 100644 (file)
index 0000000..6feab7f
--- /dev/null
@@ -0,0 +1,3 @@
+__NR_kill,
+__NR_tgkill,
+__NR_tkill,
index f93ce78cecbbd942373058ead69432283aee623c..f165308254dcc9548df2e4a46fbb60b494636c10 100644 (file)
 #define AUDIT_CLASS_READ_32 5
 #define AUDIT_CLASS_WRITE 6
 #define AUDIT_CLASS_WRITE_32 7
+#define AUDIT_CLASS_SIGNAL 8
+#define AUDIT_CLASS_SIGNAL_32 9
 
 /* This bitmask is used to validate user input.  It represents all bits that
  * are currently used in an audit field constant understood by the kernel.
index 3b1289fadf06bc7594cc59334f4256eabadfa676..50e915258515e066de2505b3dc2ce2e2f4547402 100644 (file)
@@ -23,6 +23,11 @@ static unsigned chattr_class[] = {
 ~0U
 };
 
+static unsigned signal_class[] = {
+#include <asm-generic/audit_signal.h>
+~0U
+};
+
 int audit_classify_syscall(int abi, unsigned syscall)
 {
        switch(syscall) {
@@ -49,6 +54,7 @@ static int __init audit_classes_init(void)
        audit_register_class(AUDIT_CLASS_READ, read_class);
        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
        return 0;
 }