summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-05-19 14:41:44 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-05-19 14:41:44 +0000
commit8162c5c70dcd4ca76c9ae55f88b22e1a184e1967 (patch)
treee331b917411c53d3b1b539a17dadadd760fed3a1 /arch
parent00cdab9e403a8c613724d107a0336a8590cafa6e (diff)
Call syscall_trace after finishing the sigreturn syscall but before
returning from userspace.
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/kernel/irixsig.c3
-rw-r--r--arch/mips/kernel/signal.c4
-rw-r--r--arch/mips64/kernel/signal.c4
-rw-r--r--arch/mips64/kernel/signal32.c4
4 files changed, 15 insertions, 0 deletions
diff --git a/arch/mips/kernel/irixsig.c b/arch/mips/kernel/irixsig.c
index 1bcafdf75..331c59105 100644
--- a/arch/mips/kernel/irixsig.c
+++ b/arch/mips/kernel/irixsig.c
@@ -19,6 +19,7 @@
asmlinkage int sys_wait4(pid_t pid, unsigned long *stat_addr,
int options, unsigned long *ru);
+extern asmlinkage void syscall_trace(void);
#undef DEBUG_SIG
@@ -354,6 +355,8 @@ irix_sigreturn(struct pt_regs *regs)
/*
* Don't let your children do this ...
*/
+ if (current->flags & PF_TRACESYS)
+ syscall_trace();
__asm__ __volatile__(
"move\t$29,%0\n\t"
"j\tret_from_sys_call"
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index a912be2e1..81ff3173d 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -37,6 +37,8 @@ extern asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs);
extern asmlinkage int save_fp_context(struct sigcontext *sc);
extern asmlinkage int restore_fp_context(struct sigcontext *sc);
+extern asmlinkage void syscall_trace(void);
+
/*
* Atomically swap in the new signal mask, and wait for a signal.
*/
@@ -230,6 +232,8 @@ sys_sigreturn(struct pt_regs regs)
/*
* Don't let your children do this ...
*/
+ if (current->flags & PF_TRACESYS)
+ syscall_trace();
__asm__ __volatile__(
"move\t$29, %0\n\t"
"j\tret_from_sys_call"
diff --git a/arch/mips64/kernel/signal.c b/arch/mips64/kernel/signal.c
index e2b83596c..9fad47ffe 100644
--- a/arch/mips64/kernel/signal.c
+++ b/arch/mips64/kernel/signal.c
@@ -38,6 +38,8 @@ extern asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs);
extern asmlinkage int save_fp_context(struct sigcontext *sc);
extern asmlinkage int restore_fp_context(struct sigcontext *sc);
+extern asmlinkage void syscall_trace(void);
+
static inline int store_fp_context(struct sigcontext *sc)
{
unsigned int fcr0;
@@ -257,6 +259,8 @@ sys_sigreturn(abi64_no_regargs, struct pt_regs regs)
/*
* Don't let your children do this ...
*/
+ if (current->flags & PF_TRACESYS)
+ syscall_trace();
__asm__ __volatile__(
"move\t$29, %0\n\t"
"j\tret_from_sys_call"
diff --git a/arch/mips64/kernel/signal32.c b/arch/mips64/kernel/signal32.c
index 7d4ce3050..f96676b00 100644
--- a/arch/mips64/kernel/signal32.c
+++ b/arch/mips64/kernel/signal32.c
@@ -38,6 +38,8 @@ extern asmlinkage int do_signal32(sigset_t *oldset, struct pt_regs *regs);
extern asmlinkage int save_fp_context(struct sigcontext *sc);
extern asmlinkage int restore_fp_context(struct sigcontext *sc);
+extern asmlinkage void syscall_trace(void);
+
/* 32-bit compatibility types */
#define _NSIG32_BPW 32
@@ -376,6 +378,8 @@ printk("%s called.\n", __FUNCTION__);
/*
* Don't let your children do this ...
*/
+ if (current->flags & PF_TRACESYS)
+ syscall_trace();
__asm__ __volatile__(
"move\t$29, %0\n\t"
"j\tret_from_sys_call"