forked from Minki/linux
[IA64] arch_ptrace() cleanup
Remove duplicate code, clean up goto's and indentation. Signed-off-by: Petr Tesarik <ptesarik@suse.cz> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
8db3f52541
commit
aa17f6f930
@ -1491,88 +1491,60 @@ user_disable_single_step (struct task_struct *child)
|
||||
void
|
||||
ptrace_disable (struct task_struct *child)
|
||||
{
|
||||
struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
|
||||
|
||||
/* make sure the single step/taken-branch trap bits are not set: */
|
||||
clear_tsk_thread_flag(child, TIF_SINGLESTEP);
|
||||
child_psr->ss = 0;
|
||||
child_psr->tb = 0;
|
||||
user_disable_single_step(child);
|
||||
}
|
||||
|
||||
long
|
||||
arch_ptrace (struct task_struct *child, long request, long addr, long data)
|
||||
{
|
||||
struct pt_regs *pt;
|
||||
struct switch_stack *sw;
|
||||
long ret;
|
||||
|
||||
pt = task_pt_regs(child);
|
||||
sw = (struct switch_stack *) (child->thread.ksp + 16);
|
||||
|
||||
switch (request) {
|
||||
case PTRACE_PEEKTEXT:
|
||||
case PTRACE_PEEKDATA:
|
||||
case PTRACE_PEEKTEXT:
|
||||
case PTRACE_PEEKDATA:
|
||||
/* read word at location addr */
|
||||
if (access_process_vm(child, addr, &data, sizeof(data), 0)
|
||||
!= sizeof(data)) {
|
||||
ret = -EIO;
|
||||
goto out_tsk;
|
||||
}
|
||||
ret = data;
|
||||
/* ensure "ret" is not mistaken as an error code */
|
||||
!= sizeof(data))
|
||||
return -EIO;
|
||||
/* ensure return value is not mistaken for error code */
|
||||
force_successful_syscall_return();
|
||||
goto out_tsk;
|
||||
return data;
|
||||
|
||||
/* PTRACE_POKETEXT and PTRACE_POKEDATA is handled
|
||||
* by the generic ptrace_request().
|
||||
*/
|
||||
|
||||
case PTRACE_PEEKUSR:
|
||||
case PTRACE_PEEKUSR:
|
||||
/* read the word at addr in the USER area */
|
||||
if (access_uarea(child, addr, &data, 0) < 0) {
|
||||
ret = -EIO;
|
||||
goto out_tsk;
|
||||
}
|
||||
ret = data;
|
||||
/* ensure "ret" is not mistaken as an error code */
|
||||
if (access_uarea(child, addr, &data, 0) < 0)
|
||||
return -EIO;
|
||||
/* ensure return value is not mistaken for error code */
|
||||
force_successful_syscall_return();
|
||||
goto out_tsk;
|
||||
return data;
|
||||
|
||||
case PTRACE_POKEUSR:
|
||||
case PTRACE_POKEUSR:
|
||||
/* write the word at addr in the USER area */
|
||||
if (access_uarea(child, addr, &data, 1) < 0) {
|
||||
ret = -EIO;
|
||||
goto out_tsk;
|
||||
}
|
||||
ret = 0;
|
||||
goto out_tsk;
|
||||
if (access_uarea(child, addr, &data, 1) < 0)
|
||||
return -EIO;
|
||||
return 0;
|
||||
|
||||
case PTRACE_OLD_GETSIGINFO:
|
||||
case PTRACE_OLD_GETSIGINFO:
|
||||
/* for backwards-compatibility */
|
||||
ret = ptrace_request(child, PTRACE_GETSIGINFO, addr, data);
|
||||
goto out_tsk;
|
||||
return ptrace_request(child, PTRACE_GETSIGINFO, addr, data);
|
||||
|
||||
case PTRACE_OLD_SETSIGINFO:
|
||||
case PTRACE_OLD_SETSIGINFO:
|
||||
/* for backwards-compatibility */
|
||||
ret = ptrace_request(child, PTRACE_SETSIGINFO, addr, data);
|
||||
goto out_tsk;
|
||||
return ptrace_request(child, PTRACE_SETSIGINFO, addr, data);
|
||||
|
||||
case PTRACE_GETREGS:
|
||||
ret = ptrace_getregs(child,
|
||||
(struct pt_all_user_regs __user *) data);
|
||||
goto out_tsk;
|
||||
case PTRACE_GETREGS:
|
||||
return ptrace_getregs(child,
|
||||
(struct pt_all_user_regs __user *) data);
|
||||
|
||||
case PTRACE_SETREGS:
|
||||
ret = ptrace_setregs(child,
|
||||
(struct pt_all_user_regs __user *) data);
|
||||
goto out_tsk;
|
||||
case PTRACE_SETREGS:
|
||||
return ptrace_setregs(child,
|
||||
(struct pt_all_user_regs __user *) data);
|
||||
|
||||
default:
|
||||
ret = ptrace_request(child, request, addr, data);
|
||||
goto out_tsk;
|
||||
default:
|
||||
return ptrace_request(child, request, addr, data);
|
||||
}
|
||||
out_tsk:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user