[PATCH] syscall classes hookup for ppc and s390
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 31 Aug 2006 23:02:42 +0000 (19:02 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 Sep 2006 17:32:25 +0000 (13:32 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/audit.c [new file with mode: 0644]
arch/powerpc/kernel/compat_audit.c [new file with mode: 0644]
arch/s390/kernel/Makefile
arch/s390/kernel/audit.c [new file with mode: 0644]
arch/s390/kernel/compat_audit.c [new file with mode: 0644]

index 956c2e5564b7a647592c51910b086a7812f2c285..7d32ad0194a4d0f3f7b29aaecbecc77565de205f 100644 (file)
@@ -70,6 +70,8 @@ obj-$(CONFIG_PCI)             += $(pci64-y) $(pci32-y)
 kexec-$(CONFIG_PPC64)          := machine_kexec_64.o
 kexec-$(CONFIG_PPC32)          := machine_kexec_32.o
 obj-$(CONFIG_KEXEC)            += machine_kexec.o crash.o $(kexec-y)
+obj-$(CONFIG_AUDIT)            += audit.o
+obj64-$(CONFIG_AUDIT)          += compat_audit.o
 
 ifeq ($(CONFIG_PPC_ISERIES),y)
 $(obj)/head_64.o: $(obj)/lparmap.s
diff --git a/arch/powerpc/kernel/audit.c b/arch/powerpc/kernel/audit.c
new file mode 100644 (file)
index 0000000..caf085a
--- /dev/null
@@ -0,0 +1,29 @@
+#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 chattr_class[] = {
+#include <asm-generic/audit_change_attr.h>
+~0U
+};
+
+static int __init audit_classes_init(void)
+{
+#ifdef CONFIG_PPC64
+       extern __u32 ppc32_dir_class[];
+       extern __u32 ppc32_chattr_class[];
+       audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class);
+       audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class);
+#endif
+       audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
+       audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       return 0;
+}
+
+__initcall(audit_classes_init);
diff --git a/arch/powerpc/kernel/compat_audit.c b/arch/powerpc/kernel/compat_audit.c
new file mode 100644 (file)
index 0000000..dbbb8b8
--- /dev/null
@@ -0,0 +1,12 @@
+#undef __powerpc64__
+#include <asm/unistd.h>
+
+unsigned ppc32_dir_class[] = {
+#include <asm-generic/audit_dir_write.h>
+~0U
+};
+
+unsigned ppc32_chattr_class[] = {
+#include <asm-generic/audit_change_attr.h>
+~0U
+};
index 86601a945709ed5637f04216cddd54c393170049..9a33ed6ca69605915adbfc68e23ec9ea645beddc 100644 (file)
@@ -16,9 +16,11 @@ extra-y                              += head.o init_task.o vmlinux.lds
 obj-$(CONFIG_MODULES)          += s390_ksyms.o module.o
 obj-$(CONFIG_SMP)              += smp.o
 
+obj-$(CONFIG_AUDIT)            += audit.o
+compat-obj-$(CONFIG_AUDIT)     += compat_audit.o
 obj-$(CONFIG_COMPAT)           += compat_linux.o compat_signal.o \
                                        compat_wrapper.o compat_exec_domain.o \
-                                       binfmt_elf32.o
+                                       binfmt_elf32.o $(compat-obj-y)
 
 obj-$(CONFIG_VIRT_TIMER)       += vtime.o
 obj-$(CONFIG_STACKTRACE)       += stacktrace.o
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c
new file mode 100644 (file)
index 0000000..c26cd6c
--- /dev/null
@@ -0,0 +1,29 @@
+#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 chattr_class[] = {
+#include <asm-generic/audit_change_attr.h>
+~0U
+};
+
+static int __init audit_classes_init(void)
+{
+#ifdef CONFIG_COMPAT
+       extern __u32 s390_dir_class[];
+       extern __u32 s390_chattr_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_DIR_WRITE, dir_class);
+       audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
+       return 0;
+}
+
+__initcall(audit_classes_init);
diff --git a/arch/s390/kernel/compat_audit.c b/arch/s390/kernel/compat_audit.c
new file mode 100644 (file)
index 0000000..1a7d34f
--- /dev/null
@@ -0,0 +1,12 @@
+#undef __s390x__
+#include <asm/unistd.h>
+
+unsigned s390_dir_class[] = {
+#include <asm-generic/audit_dir_write.h>
+~0U
+};
+
+unsigned s390_chattr_class[] = {
+#include <asm-generic/audit_change_attr.h>
+~0U
+};