perf: Fix put_event() ctx lock
authorPeter Zijlstra <peterz@infradead.org>
Thu, 29 Jan 2015 13:44:34 +0000 (14:44 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 4 Feb 2015 07:07:12 +0000 (08:07 +0100)
commita83fe28e2e45392464858a96745db26ac73670c8
treef5512a81ef46a14319e1600079b36e9cea11ee90
parent8f95b435b62522aed3381aaea920de8d09ccabf3
perf: Fix put_event() ctx lock

So what I suspect; but I'm in zombie mode today it seems; is that while
I initially thought that it was impossible for ctx to change when
refcount dropped to 0, I now suspect its possible.

Note that until perf_remove_from_context() the event is still active and
visible on the lists. So a concurrent sys_perf_event_open() from another
task into this task can race.

Reported-by: Vince Weaver <vincent.weaver@maine.edu>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Stephane Eranian <eranian@gmail.com>
Cc: mark.rutland@arm.com
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20150129134434.GB26304@twins.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/events/core.c