Messages in this thread | | | Date | Mon, 17 Jan 2011 22:01:17 +0100 | From | Frederic Weisbecker <> | Subject | Re: Q: perf_event && task->ptrace_bps[] |
| |
On Mon, Jan 17, 2011 at 09:52:56PM +0100, Peter Zijlstra wrote: > On Mon, 2011-01-17 at 21:34 +0100, Oleg Nesterov wrote: > > On 11/08, Oleg Nesterov wrote: > > > > > > I am trying to understand the usage of hw-breakpoints in arch_ptrace(). > > > ptrace_set_debugreg() and related code looks obviously racy. Nothing > > > protects us against flush_ptrace_hw_breakpoint() called by the dying > > > tracee. Afaics we can leak perf_event or use the already freed memory > > > or both. > > > > > > Am I missed something? > > > > > > Looking into the git history, I don't even know which patch should be > > > blamed (if I am right), there were too many changes. I noticed that > > > 2ebd4ffb6d0cb877787b1e42be8485820158857e "perf events: Split out task > > > search into helper" moved the PF_EXITING check from find_get_context(). > > > This check coould help if sys_ptrace() races with SIGKILL, but it was > > > racy anyway. > > > > Ping. > > > > Any idea how to fix this cleanly? May be we can reuse perf_event_mutex, > > but this looks soooo ugly. And do_exit()->flush_ptrace_hw_breakpoint() > > has the strange "FIXME:" comment which doesn't help me to understand > > what can we do. > > > > Probably the best fix is to change this code so that the tracer owns > > ->ptrace_bps[], not the tracee. But this is not trivial, and needs a > > lot of changes in ptrace code. > > Wasn't this sorted by: 8882135bcd332f294df5455747ea43ba9e6f77ad? > > Or is this purely related to the ptrace muck? in which case I guess > Frederic is you man, I never looked at the hw_breakpoint stuff in > general and the ptrace bits in particular.
Yeah sorry I lost track on this and left it unanswered in the middle. Just lemme rewalk the thread and I'm back :)
| |