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.5.x5
[linux-2.6.git]
/
arch
/
sparc
/
kernel
/
ptrace.c
diff --git
a/arch/sparc/kernel/ptrace.c
b/arch/sparc/kernel/ptrace.c
index
949072b
..
6081e35
100644
(file)
--- a/
arch/sparc/kernel/ptrace.c
+++ b/
arch/sparc/kernel/ptrace.c
@@
-48,9
+48,9
@@
static inline void pt_succ_return(struct pt_regs *regs, unsigned long value)
}
static void
}
static void
-pt_succ_return_linux(struct pt_regs *regs, unsigned long value, long *addr)
+pt_succ_return_linux(struct pt_regs *regs, unsigned long value, long
__user
*addr)
{
{
- if (put_user(value,
(long __user *)
addr)) {
+ if (put_user(value, addr)) {
pt_error_return(regs, EFAULT);
return;
}
pt_error_return(regs, EFAULT);
return;
}
@@
-61,7
+61,7
@@
pt_succ_return_linux(struct pt_regs *regs, unsigned long value, long *addr)
}
static void
}
static void
-pt_os_succ_return (struct pt_regs *regs, unsigned long val, long *addr)
+pt_os_succ_return (struct pt_regs *regs, unsigned long val, long
__user
*addr)
{
if (current->personality == PER_SUNOS)
pt_succ_return (regs, val);
{
if (current->personality == PER_SUNOS)
pt_succ_return (regs, val);
@@
-71,7
+71,7
@@
pt_os_succ_return (struct pt_regs *regs, unsigned long val, long *addr)
/* Fuck me gently with a chainsaw... */
static inline void read_sunos_user(struct pt_regs *regs, unsigned long offset,
/* Fuck me gently with a chainsaw... */
static inline void read_sunos_user(struct pt_regs *regs, unsigned long offset,
- struct task_struct *tsk, long *addr)
+ struct task_struct *tsk, long
__user
*addr)
{
struct pt_regs *cregs = tsk->thread.kregs;
struct thread_info *t = tsk->thread_info;
{
struct pt_regs *cregs = tsk->thread.kregs;
struct thread_info *t = tsk->thread_info;
@@
-349,14
+349,14
@@
asmlinkage void do_ptrace(struct pt_regs *regs)
if (access_process_vm(child, addr,
&tmp, sizeof(tmp), 0) == sizeof(tmp))
if (access_process_vm(child, addr,
&tmp, sizeof(tmp), 0) == sizeof(tmp))
- pt_os_succ_return(regs, tmp, (long *)data);
+ pt_os_succ_return(regs, tmp, (long
__user
*)data);
else
pt_error_return(regs, EIO);
goto out_tsk;
}
case PTRACE_PEEKUSR:
else
pt_error_return(regs, EIO);
goto out_tsk;
}
case PTRACE_PEEKUSR:
- read_sunos_user(regs, addr, child, (long *) data);
+ read_sunos_user(regs, addr, child, (long
__user
*) data);
goto out_tsk;
case PTRACE_POKEUSR:
goto out_tsk;
case PTRACE_POKEUSR:
@@
-571,7
+571,7
@@
asmlinkage void do_ptrace(struct pt_regs *regs)
* exit.
*/
case PTRACE_KILL: {
* exit.
*/
case PTRACE_KILL: {
- if (child->
state == TASK_ZOMBIE) {
/* already dead */
+ if (child->
exit_state == EXIT_ZOMBIE) {
/* already dead */
pt_succ_return(regs, 0);
goto out_tsk;
}
pt_succ_return(regs, 0);
goto out_tsk;
}
@@
-618,12
+618,9
@@
asmlinkage void syscall_trace(void)
return;
if (!(current->ptrace & PT_PTRACED))
return;
return;
if (!(current->ptrace & PT_PTRACED))
return;
- current->exit_code = SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
- ? 0x80 : 0);
- current->state = TASK_STOPPED;
current->thread.flags ^= MAGIC_CONSTANT;
current->thread.flags ^= MAGIC_CONSTANT;
- 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