[IA64] convert sys_ptrace to arch_ptrace
Convert sys_ptrace() to arch_ptrace(). Signed-off-by: Petr Tesarik <ptesarik@suse.cz> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
e868a55c2a
commit
eac738e6ce
|
@ -1470,46 +1470,13 @@ ptrace_disable (struct task_struct *child)
|
||||||
child_psr->tb = 0;
|
child_psr->tb = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage long
|
long
|
||||||
sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
|
arch_ptrace (struct task_struct *child, long request, long addr, long data)
|
||||||
{
|
{
|
||||||
struct pt_regs *pt;
|
struct pt_regs *pt;
|
||||||
struct task_struct *child;
|
|
||||||
struct switch_stack *sw;
|
struct switch_stack *sw;
|
||||||
long ret;
|
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);
|
pt = task_pt_regs(child);
|
||||||
sw = (struct switch_stack *) (child->thread.ksp + 16);
|
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)
|
if (child->exit_state == EXIT_ZOMBIE)
|
||||||
/* already dead */
|
/* already dead */
|
||||||
goto out_tsk;
|
return 0;
|
||||||
child->exit_code = SIGKILL;
|
child->exit_code = SIGKILL;
|
||||||
|
|
||||||
ptrace_disable(child);
|
ptrace_disable(child);
|
||||||
|
@ -1643,9 +1610,6 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
|
||||||
goto out_tsk;
|
goto out_tsk;
|
||||||
}
|
}
|
||||||
out_tsk:
|
out_tsk:
|
||||||
put_task_struct(child);
|
|
||||||
out:
|
|
||||||
unlock_kernel();
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -233,8 +233,6 @@ struct switch_stack {
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
#define __ARCH_SYS_PTRACE 1
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We use the ia64_psr(regs)->ri to determine which of the three
|
* We use the ia64_psr(regs)->ri to determine which of the three
|
||||||
* instructions in bundle (16 bytes) took the sample. Generate
|
* instructions in bundle (16 bytes) took the sample. Generate
|
||||||
|
|
Loading…
Reference in New Issue