On Tue, Mar 07, 2017 at 05:51:32PM +0100, Oleg Nesterov wrote: > On 03/07, Dmitry Vyukov wrote:
> > I would what is that that is failed in copy_process. Could it be > > perf_event_init_task itself? Maybe it leaves a pointer to p in some > > shared state on some error conditions? > > I am looking at perf_event_init_task() too and I can't understand the > error handling... > > perf_event_init_context() can return success even if inherit_task_group() in > the first list_for_each_entry(pinned_groups) fails, "ret" will be overwritten > by the 2nd list_for_each_entry(flexible_groups) loop. "inherited_all" should > be cleared, still this looks confusing at least. > > inherit_event() returns NULL under is_orphaned_event() check, not ERR_PTR(). > Is it correct? Urgh, there was something tricky there, but I cannot remember, and it seems we didn't put a comment in either :/ Alexander, can you remember? But yes, this all looks a tad dodgy, I'll try and have a look, but I feel like I'm coming down with something :-(

