perf: Add more assertions
authorPeter Zijlstra <peterz@infradead.org>
Thu, 14 Jan 2016 09:51:03 +0000 (10:51 +0100)
committerIngo Molnar <mingo@kernel.org>
Thu, 21 Jan 2016 17:54:25 +0000 (18:54 +0100)
Try to trigger warnings before races do damage.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/events/core.c

index 6620432491f6e1213c5d6b1d7408d453938e5f89..3eaf91b104e95a2dbcb698278b4a8f5eedb7a5e2 100644 (file)
@@ -263,6 +263,15 @@ static void event_function_call(struct perf_event *event, event_f func, void *da
                .data = data,
        };
 
+       if (!event->parent) {
+               /*
+                * If this is a !child event, we must hold ctx::mutex to
+                * stabilize the the event->ctx relation. See
+                * perf_event_ctx_lock().
+                */
+               lockdep_assert_held(&ctx->mutex);
+       }
+
        if (!task) {
                cpu_function_call(event->cpu, event_function, &efs);
                return;