Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Amy Griffis and committed by
Al Viro
7f13da40 a5cb013d

+76
+5
arch/ia64/ia32/audit.c
··· 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) {
+8
arch/ia64/kernel/audit.c
··· 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 ··· 54 49 extern __u32 ia32_write_class[]; 55 50 extern __u32 ia32_read_class[]; 56 51 extern __u32 ia32_chattr_class[]; 52 + extern __u32 ia32_signal_class[]; 57 53 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); 58 54 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); 59 55 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); 60 56 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); 57 + audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class); 61 58 #endif 62 59 audit_register_class(AUDIT_CLASS_WRITE, write_class); 63 60 audit_register_class(AUDIT_CLASS_READ, read_class); 64 61 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 65 62 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 63 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 66 64 return 0; 67 65 } 68 66
+8
arch/powerpc/kernel/audit.c
··· 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 ··· 56 51 extern __u32 ppc32_write_class[]; 57 52 extern __u32 ppc32_read_class[]; 58 53 extern __u32 ppc32_chattr_class[]; 54 + extern __u32 ppc32_signal_class[]; 59 55 audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class); 60 56 audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class); 61 57 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); 62 58 audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); 59 + audit_register_class(AUDIT_CLASS_SIGNAL_32, ppc32_signal_class); 63 60 #endif 64 61 audit_register_class(AUDIT_CLASS_WRITE, write_class); 65 62 audit_register_class(AUDIT_CLASS_READ, read_class); 66 63 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 67 64 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 65 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 68 66 return 0; 69 67 } 70 68
+5
arch/powerpc/kernel/compat_audit.c
··· 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) {
+8
arch/s390/kernel/audit.c
··· 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 ··· 56 51 extern __u32 s390_write_class[]; 57 52 extern __u32 s390_read_class[]; 58 53 extern __u32 s390_chattr_class[]; 54 + extern __u32 s390_signal_class[]; 59 55 audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); 60 56 audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); 61 57 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); 62 58 audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); 59 + audit_register_class(AUDIT_CLASS_SIGNAL_32, s390_signal_class); 63 60 #endif 64 61 audit_register_class(AUDIT_CLASS_WRITE, write_class); 65 62 audit_register_class(AUDIT_CLASS_READ, read_class); 66 63 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 67 64 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 65 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 68 66 return 0; 69 67 } 70 68
+5
arch/s390/kernel/compat_audit.c
··· 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) {
+8
arch/sparc64/kernel/audit.c
··· 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 ··· 56 51 extern __u32 sparc32_write_class[]; 57 52 extern __u32 sparc32_read_class[]; 58 53 extern __u32 sparc32_chattr_class[]; 54 + extern __u32 sparc32_signal_class[]; 59 55 audit_register_class(AUDIT_CLASS_WRITE_32, sparc32_write_class); 60 56 audit_register_class(AUDIT_CLASS_READ_32, sparc32_read_class); 61 57 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, sparc32_dir_class); 62 58 audit_register_class(AUDIT_CLASS_CHATTR_32, sparc32_chattr_class); 59 + audit_register_class(AUDIT_CLASS_SIGNAL_32, sparc32_signal_class); 63 60 #endif 64 61 audit_register_class(AUDIT_CLASS_WRITE, write_class); 65 62 audit_register_class(AUDIT_CLASS_READ, read_class); 66 63 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 67 64 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 65 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 68 66 return 0; 69 67 } 70 68
+5
arch/sparc64/kernel/compat_audit.c
··· 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) {
+5
arch/x86_64/ia32/audit.c
··· 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) {
+8
arch/x86_64/kernel/audit.c
··· 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 ··· 54 49 extern __u32 ia32_write_class[]; 55 50 extern __u32 ia32_read_class[]; 56 51 extern __u32 ia32_chattr_class[]; 52 + extern __u32 ia32_signal_class[]; 57 53 audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); 58 54 audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); 59 55 audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); 60 56 audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); 57 + audit_register_class(AUDIT_CLASS_SIGNAL_32, ia32_signal_class); 61 58 #endif 62 59 audit_register_class(AUDIT_CLASS_WRITE, write_class); 63 60 audit_register_class(AUDIT_CLASS_READ, read_class); 64 61 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 65 62 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 63 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 66 64 return 0; 67 65 } 68 66
+3
include/asm-generic/audit_signal.h
··· 1 + __NR_kill, 2 + __NR_tgkill, 3 + __NR_tkill,
+2
include/linux/audit.h
··· 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.
+6
lib/audit.c
··· 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) { ··· 54 49 audit_register_class(AUDIT_CLASS_READ, read_class); 55 50 audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); 56 51 audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); 52 + audit_register_class(AUDIT_CLASS_SIGNAL, signal_class); 57 53 return 0; 58 54 } 59 55