提交 eac738e6 编写于 作者: P Petr Tesarik 提交者: Tony Luck

[IA64] convert sys_ptrace to arch_ptrace

Convert sys_ptrace() to arch_ptrace().
Signed-off-by: NPetr Tesarik <ptesarik@suse.cz>
Signed-off-by: NTony Luck <tony.luck@intel.com>
上级 e868a55c
......@@ -1470,46 +1470,13 @@ ptrace_disable (struct task_struct *child)
child_psr->tb = 0;
}
asmlinkage long
sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
long
arch_ptrace (struct task_struct *child, long request, long addr, long data)
{
struct pt_regs *pt;
struct task_struct *child;
struct switch_stack *sw;
long ret;
lock_kernel();
ret = -EPERM;
if (request == PTRACE_TRACEME) {
ret = ptrace_traceme();
goto out;
}
ret = -ESRCH;
read_lock(&tasklist_lock);
{
child = find_task_by_pid(pid);
if (child)
get_task_struct(child);
}
read_unlock(&tasklist_lock);
if (!child)
goto out;
ret = -EPERM;
if (pid == 1) /* no messing around with init! */
goto out_tsk;
if (request == PTRACE_ATTACH) {
ret = ptrace_attach(child);
if (!ret)
arch_ptrace_attach(child);
goto out_tsk;
}
ret = ptrace_check_attach(child, request == PTRACE_KILL);
if (ret < 0)
goto out_tsk;
pt = task_pt_regs(child);
sw = (struct switch_stack *) (child->thread.ksp + 16);
......@@ -1594,7 +1561,7 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
*/
if (child->exit_state == EXIT_ZOMBIE)
/* already dead */
goto out_tsk;
return 0;
child->exit_code = SIGKILL;
ptrace_disable(child);
......@@ -1643,9 +1610,6 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
goto out_tsk;
}
out_tsk:
put_task_struct(child);
out:
unlock_kernel();
return ret;
}
......
......@@ -233,8 +233,6 @@ struct switch_stack {
#include <asm/current.h>
#include <asm/page.h>
#define __ARCH_SYS_PTRACE 1
/*
* We use the ia64_psr(regs)->ri to determine which of the three
* instructions in bundle (16 bytes) took the sample. Generate
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册