diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-09-12 12:03:21 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-09-12 12:03:21 -0400 |
commit | 97148ba2235e334e57d05fa07045cf3e6629763c (patch) | |
tree | a04504e7d4feb0dacfe1862a59abecaf99997f09 /arch/s390/kernel/audit.c | |
parent | 76ff3c6e3b389a5a7692811dd456e0ff58340cac (diff) | |
parent | 05ff0e291af086f4325bac76abad250690bbbd63 (diff) | |
download | kernel_goldelico_gta04-97148ba2235e334e57d05fa07045cf3e6629763c.zip kernel_goldelico_gta04-97148ba2235e334e57d05fa07045cf3e6629763c.tar.gz kernel_goldelico_gta04-97148ba2235e334e57d05fa07045cf3e6629763c.tar.bz2 |
Merge branch 'master' into upstream
Diffstat (limited to 'arch/s390/kernel/audit.c')
-rw-r--r-- | arch/s390/kernel/audit.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c new file mode 100644 index 0000000..0741d91 --- /dev/null +++ b/arch/s390/kernel/audit.c @@ -0,0 +1,66 @@ +#include <linux/init.h> +#include <linux/types.h> +#include <linux/audit.h> +#include <asm/unistd.h> + +static unsigned dir_class[] = { +#include <asm-generic/audit_dir_write.h> +~0U +}; + +static unsigned read_class[] = { +#include <asm-generic/audit_read.h> +~0U +}; + +static unsigned write_class[] = { +#include <asm-generic/audit_write.h> +~0U +}; + +static unsigned chattr_class[] = { +#include <asm-generic/audit_change_attr.h> +~0U +}; + +int audit_classify_syscall(int abi, unsigned syscall) +{ +#ifdef CONFIG_COMPAT + extern int s390_classify_syscall(unsigned); + if (abi == AUDIT_ARCH_S390) + return s390_classify_syscall(syscall); +#endif + switch(syscall) { + case __NR_open: + return 2; + case __NR_openat: + return 3; + case __NR_socketcall: + return 4; + case __NR_execve: + return 5; + default: + return 0; + } +} + +static int __init audit_classes_init(void) +{ +#ifdef CONFIG_COMPAT + extern __u32 s390_dir_class[]; + extern __u32 s390_write_class[]; + extern __u32 s390_read_class[]; + extern __u32 s390_chattr_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); +#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); + return 0; +} + +__initcall(audit_classes_init); |