Skip to content

Commit

Permalink
powerpc, hw_breakpoints: Fix racy access to ptrace breakpoints
Browse files Browse the repository at this point in the history
While the tracer accesses ptrace breakpoints, the child task may
concurrently exit due to a SIGKILL and thus release its breakpoints
at the same time. We can then dereference some freed pointers.

To fix this, hold a reference on the child breakpoints before
manipulating them.

Reported-by: Oleg Nesterov <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
Acked-by: Prasad <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Paul Mundt <[email protected]>
Cc: v2.6.33.. <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
  • Loading branch information
fweisbec committed Apr 25, 2011
1 parent 87dc669 commit 07fa7a0
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/powerpc/kernel/ptrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1591,7 +1591,10 @@ long arch_ptrace(struct task_struct *child, long request,
}

case PTRACE_SET_DEBUGREG:
if (ptrace_get_breakpoints(child) < 0)
return -ESRCH;
ret = ptrace_set_debugreg(child, addr, data);
ptrace_put_breakpoints(child);
break;

#ifdef CONFIG_PPC64
Expand Down

0 comments on commit 07fa7a0

Please sign in to comment.