aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/kernel/ptrace.c
diff options
context:
space:
mode:
authorAndrea Arcangeli <andrea@cpushare.com>2005-06-24 01:00:45 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-24 03:05:18 -0400
commit7286aa9b9ab35f20b1ff16d867f4535701df99b5 (patch)
treec816ea0350a0f0c7ac503c6020a6ea5398a59ee4 /arch/ppc64/kernel/ptrace.c
parent16822e62053e73fa7def9decc38a7e287d27d980 (diff)
[PATCH] ppc64: fix seccomp with 32-bit userland
The seccomp check has to happen when entering the syscall and not when exiting it or regs->gpr[0] contains garabge during signal handling in ppc64_rt_sigreturn (this actually might be a bug too, but an orthogonal one, since we really have to run the check before invoking the syscall and not after it). Signed-off-by: Andrea Arcangeli <andrea@cpushare.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc64/kernel/ptrace.c')
-rw-r--r--arch/ppc64/kernel/ptrace.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/ppc64/kernel/ptrace.c b/arch/ppc64/kernel/ptrace.c
index 9f8c6087ae56..2993f108d96d 100644
--- a/arch/ppc64/kernel/ptrace.c
+++ b/arch/ppc64/kernel/ptrace.c
@@ -305,6 +305,8 @@ static void do_syscall_trace(void)
305 305
306void do_syscall_trace_enter(struct pt_regs *regs) 306void do_syscall_trace_enter(struct pt_regs *regs)
307{ 307{
308 secure_computing(regs->gpr[0]);
309
308 if (test_thread_flag(TIF_SYSCALL_TRACE) 310 if (test_thread_flag(TIF_SYSCALL_TRACE)
309 && (current->ptrace & PT_PTRACED)) 311 && (current->ptrace & PT_PTRACED))
310 do_syscall_trace(); 312 do_syscall_trace();
@@ -320,8 +322,6 @@ void do_syscall_trace_enter(struct pt_regs *regs)
320 322
321void do_syscall_trace_leave(struct pt_regs *regs) 323void do_syscall_trace_leave(struct pt_regs *regs)
322{ 324{
323 secure_computing(regs->gpr[0]);
324
325 if (unlikely(current->audit_context)) 325 if (unlikely(current->audit_context))
326 audit_syscall_exit(current, 326 audit_syscall_exit(current,
327 (regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS, 327 (regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,