[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:
Petr Tesarik 2008-02-26 12:03:28 +01:00 committed by Tony Luck
parent 8db3f52541
commit aa17f6f930
1 changed files with 28 additions and 56 deletions

View File

@ -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;
}