2009-03-04 20:28:16

by Martin Michlmayr

[permalink] [raw]
Subject: "x86-64: seccomp: fix 32/64 syscall hole" breaks mips

The change "x86-64: seccomp: fix 32/64 syscall hole" breaks compilation on
MIPS (and possibly other architectures):

/home/tbm/kernel/linux-2.6-2.6.29~rc7/debian/build/source_mips_none/kernel/seccomp.c: In function ‘__secure_computing’:
/home/tbm/kernel/linux-2.6-2.6.29~rc7/debian/build/source_mips_none/kernel/seccomp.c:42: error: implicit declaration of function ‘is_compat_task’
make[6]: *** [kernel/seccomp.o] Error 1

--
Martin Michlmayr
http://www.cyrius.com/


2009-03-04 20:42:18

by Roland McGrath

[permalink] [raw]
Subject: Re: "x86-64: seccomp: fix 32/64 syscall hole" breaks mips

> The change "x86-64: seccomp: fix 32/64 syscall hole" breaks compilation on
> MIPS (and possibly other architectures):

That's what Linus asked for.
He wants you to define is_compat_task() in asm/compat.h.


Thanks,
Roland

2009-03-05 10:46:24

by Ralf Baechle

[permalink] [raw]
Subject: [PATCH] MIPS: compat: Implement is_compat_task.

This is merely a build fix required after
5b1017404aea6d2e552e991b3fd814d839e9cd67 was applied. MIPS doesn't have
the issue that was fixed for x86-64 by that patch.

This also doesn't solve the N32 issue which is that N32 seccomp processes
will be treated as non-compat processes thus only have access to N64
syscalls.

Signed-off-by: Ralf Baechle <[email protected]>

diff --git a/arch/mips/include/asm/compat.h b/arch/mips/include/asm/compat.h
index ac5d541..6c5b409 100644
--- a/arch/mips/include/asm/compat.h
+++ b/arch/mips/include/asm/compat.h
@@ -3,6 +3,8 @@
/*
* Architecture specific compatibility types
*/
+#include <linux/seccomp.h>
+#include <linux/thread_info.h>
#include <linux/types.h>
#include <asm/page.h>
#include <asm/ptrace.h>
@@ -218,4 +220,9 @@ struct compat_shmid64_ds {
compat_ulong_t __unused2;
};

+static inline int is_compat_task(void)
+{
+ return test_thread_flag(TIF_32BIT);
+}
+
#endif /* _ASM_COMPAT_H */