git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.3
[linux-2.6.git]
/
arch
/
v850
/
kernel
/
ptrace.c
diff --git
a/arch/v850/kernel/ptrace.c
b/arch/v850/kernel/ptrace.c
index
7d25547
..
bf43ea6
100644
(file)
--- a/
arch/v850/kernel/ptrace.c
+++ b/
arch/v850/kernel/ptrace.c
@@
-149,14
+149,8
@@
int sys_ptrace(long request, long pid, long addr, long data)
rval = ptrace_attach(child);
goto out_tsk;
}
rval = ptrace_attach(child);
goto out_tsk;
}
- rval = -ESRCH;
- if (!(child->ptrace & PT_PTRACED))
- goto out_tsk;
- if (child->state != TASK_STOPPED) {
- if (request != PTRACE_KILL)
- goto out_tsk;
- }
- if (child->parent != current)
+ ret = ptrace_check_attach(child, request == PTRACE_KILL);
+ if (ret < 0)
goto out_tsk;
switch (request) {
goto out_tsk;
switch (request) {
@@
-271,11
+265,8
@@
asmlinkage void syscall_trace(void)
return;
/* The 0x80 provides a way for the tracing parent to distinguish
between a syscall stop and SIGTRAP delivery */
return;
/* The 0x80 provides a way for the tracing parent to distinguish
between a syscall stop and SIGTRAP delivery */
- current->exit_code = SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
- ? 0x80 : 0);
- current->state = TASK_STOPPED;
- notify_parent(current, SIGCHLD);
- schedule();
+ ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
+ ? 0x80 : 0));
/*
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the
/*
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the