aboutsummaryrefslogtreecommitdiff
path: root/arch/ia64/kernel/audit.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-09-12 11:42:45 -0400
committerJeff Garzik <jeff@garzik.org>2006-09-12 11:42:45 -0400
commit8083e1656211eb1487329923d592ee061d08d7b3 (patch)
tree92a44787484996b82365fab21f2dec960ab4f2d3 /arch/ia64/kernel/audit.c
parent6b12a3d35ff6cb09f8b777ab258ea1e32c680d62 (diff)
parent1802ca745280b916cda4090e459741b8c9b3e8d0 (diff)
Merge branch 'upstream-fixes' into upstream
Diffstat (limited to 'arch/ia64/kernel/audit.c')
-rw-r--r--arch/ia64/kernel/audit.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/ia64/kernel/audit.c b/arch/ia64/kernel/audit.c
index f2512931cca..04682555a28 100644
--- a/arch/ia64/kernel/audit.c
+++ b/arch/ia64/kernel/audit.c
@@ -8,19 +8,54 @@ static unsigned dir_class[] = {
~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_IA32_SUPPORT
+ extern int ia32_classify_syscall(unsigned);
+ if (abi == AUDIT_ARCH_I386)
+ return ia32_classify_syscall(syscall);
+#endif
+ switch(syscall) {
+ case __NR_open:
+ return 2;
+ case __NR_openat:
+ return 3;
+ case __NR_execve:
+ return 5;
+ default:
+ return 0;
+ }
+}
+
static int __init audit_classes_init(void)
{
#ifdef CONFIG_IA32_SUPPORT
extern __u32 ia32_dir_class[];
+ extern __u32 ia32_write_class[];
+ extern __u32 ia32_read_class[];
extern __u32 ia32_chattr_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);
#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;