Consolidate PTRACE_DETACH
Identical handlers of PTRACE_DETACH go into ptrace_request(). Not touching compat code. Not touching archs that don't call ptrace_request. Signed-off-by: Alexey Dobriyan <adobriyan@sw.ru> Acked-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
e6716b87d5
Коммит
1bcf548293
|
@ -368,10 +368,6 @@ do_sys_ptrace(long request, long pid, long addr, long data,
|
|||
ret = 0;
|
||||
goto out;
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
goto out;
|
||||
|
||||
default:
|
||||
ret = ptrace_request(child, request, addr, data);
|
||||
goto out;
|
||||
|
|
|
@ -731,10 +731,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS:
|
||||
ret = ptrace_getregs(child, (void __user *)data);
|
||||
break;
|
||||
|
|
|
@ -227,11 +227,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
/* Detach a process that was attached */
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS:
|
||||
ret = ptrace_getregs(child, (void __user *)data);
|
||||
break;
|
||||
|
|
|
@ -385,12 +385,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
break;
|
||||
}
|
||||
|
||||
case PTRACE_DETACH:
|
||||
{ /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
}
|
||||
|
||||
case PTRACE_GETREGS:
|
||||
{
|
||||
|
||||
|
|
|
@ -177,10 +177,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
/* Get all GP registers from the child. */
|
||||
case PTRACE_GETREGS: {
|
||||
int i;
|
||||
|
|
|
@ -245,10 +245,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
break;
|
||||
|
||||
}
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
/* Get all GP registers from the child. */
|
||||
case PTRACE_GETREGS: {
|
||||
int i;
|
||||
|
|
|
@ -704,14 +704,6 @@ do_ptrace(long request, struct task_struct *child, long addr, long data)
|
|||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* detach a process that was attached.
|
||||
*/
|
||||
case PTRACE_DETACH:
|
||||
ret = 0;
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS:
|
||||
ret = ptrace_getregs(child, (void __user *)data);
|
||||
break;
|
||||
|
|
|
@ -226,10 +226,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
wake_up_process(child);
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS: /* Get all gp regs from the child. */
|
||||
for (i = 0; i < 19; i++) {
|
||||
tmp = get_reg(child, i);
|
||||
|
|
|
@ -435,10 +435,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
wake_up_process(child);
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GET_THREAD_AREA:
|
||||
ret = put_user(task_thread_info(child)->tp_value,
|
||||
(unsigned long __user *) data);
|
||||
|
|
|
@ -329,10 +329,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
/* give it a chance to run. */
|
||||
goto out_wake;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
goto out_tsk;
|
||||
|
||||
case PTRACE_GETEVENTMSG:
|
||||
ret = put_user(child->ptrace_message, (unsigned int __user *) data);
|
||||
goto out_tsk;
|
||||
|
|
|
@ -505,10 +505,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = ptrace_set_debugreg(child, addr, data);
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
case PTRACE_GETREGS64:
|
||||
#endif
|
||||
|
|
|
@ -683,11 +683,6 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
wake_up_process(child);
|
||||
return 0;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
/* detach a process that was attached. */
|
||||
return ptrace_detach(child, data);
|
||||
|
||||
|
||||
/* Do requests that differ for 31/64 bit */
|
||||
default:
|
||||
#ifdef CONFIG_COMPAT
|
||||
|
|
|
@ -211,10 +211,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
break;
|
||||
}
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_SH_DSP
|
||||
case PTRACE_GETDSPREGS: {
|
||||
unsigned long dp;
|
||||
|
|
|
@ -244,10 +244,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
break;
|
||||
}
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = ptrace_request(child, request, addr, data);
|
||||
break;
|
||||
|
|
|
@ -119,11 +119,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
break;
|
||||
}
|
||||
|
||||
case PTRACE_DETACH:
|
||||
/* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
#ifdef PTRACE_GETREGS
|
||||
case PTRACE_GETREGS: { /* Get all gp regs from the child. */
|
||||
if (!access_ok(VERIFY_WRITE, p, MAX_REG_OFFSET)) {
|
||||
|
|
|
@ -524,11 +524,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
/* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS: { /* Get all gp regs from the child. */
|
||||
if (!access_ok(VERIFY_WRITE, datap, FRAME_SIZE*sizeof(long))) {
|
||||
ret = -EIO;
|
||||
|
|
|
@ -500,11 +500,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH:
|
||||
/* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
case PTRACE_GETREGS: { /* Get all gp regs from the child. */
|
||||
if (!access_ok(VERIFY_WRITE, (unsigned __user *)data,
|
||||
sizeof(struct user_regs_struct))) {
|
||||
|
|
|
@ -304,10 +304,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
ret = put_user(sizeof(elf_fpregset_t), (unsigned long *) data);
|
||||
break;
|
||||
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = ptrace_request(child, request, addr, data);
|
||||
goto out;
|
||||
|
|
|
@ -386,6 +386,9 @@ int ptrace_request(struct task_struct *child, long request,
|
|||
case PTRACE_SETSIGINFO:
|
||||
ret = ptrace_setsiginfo(child, (siginfo_t __user *) data);
|
||||
break;
|
||||
case PTRACE_DETACH: /* detach a process that was attached. */
|
||||
ret = ptrace_detach(child, data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче