ptrace/arm: revert "hw_breakpoints: Fix racy access to ptrace breakpoints"
authorOleg Nesterov <oleg@redhat.com>
Mon, 8 Jul 2013 23:00:51 +0000 (16:00 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Jul 2013 17:33:25 +0000 (10:33 -0700)
This reverts commit bf0b8f4b55e5 ("hw_breakpoints: Fix racy access to
ptrace breakpoints").

The patch was fine but we can no longer race with SIGKILL after commit
9899d11f6544 ("ptrace: ensure arch_ptrace/ptrace_request can never race
with SIGKILL"), the __TASK_TRACED tracee can't be woken up and
->ptrace_bps[] can't go away.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Michael Neuling <mikey@neuling.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Prasad <prasad@linux.vnet.ibm.com>
Cc: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/arm/kernel/ptrace.c

index 2bc1514d6dbe84955d0d070db1ae2ac6e65a5fbd..0dd3b79b15c3d90f0ad54f52d4240392fb51258e 100644 (file)
@@ -886,20 +886,12 @@ long arch_ptrace(struct task_struct *child, long request,
 
 #ifdef CONFIG_HAVE_HW_BREAKPOINT
                case PTRACE_GETHBPREGS:
-                       if (ptrace_get_breakpoints(child) < 0)
-                               return -ESRCH;
-
                        ret = ptrace_gethbpregs(child, addr,
                                                (unsigned long __user *)data);
-                       ptrace_put_breakpoints(child);
                        break;
                case PTRACE_SETHBPREGS:
-                       if (ptrace_get_breakpoints(child) < 0)
-                               return -ESRCH;
-
                        ret = ptrace_sethbpregs(child, addr,
                                                (unsigned long __user *)data);
-                       ptrace_put_breakpoints(child);
                        break;
 #endif