perf_events: Fix rcu and locking issues with cgroup support
authorStephane Eranian <eranian@google.com>
Fri, 18 Feb 2011 12:40:01 +0000 (14:40 +0200)
committerIngo Molnar <mingo@elte.hu>
Wed, 23 Feb 2011 10:35:46 +0000 (11:35 +0100)
commit3f7cce3c18188a067d463749168bdda5abc5b0f7
tree9c161a970a19176f26dc29811dc9ae4d64bfe8a8
parentc97cf42219b7b6037d2f96c27a5f114f2383f828
perf_events: Fix rcu and locking issues with cgroup support

This patches ensures that we do not end up calling
perf_cgroup_from_task() when there is no cgroup event.
This avoids potential RCU and locking issues.

The change in perf_cgroup_set_timestamp() ensures we
check against ctx->nr_cgroups. It also avoids calling
perf_clock() tiwce in a row. It also ensures we do need
to grab ctx->lock before calling the function.

We drop update_cgrp_time() from task_clock_event_read()
because it is not needed. This also avoids having to
deal with perf_cgroup_from_task().

Thanks to Peter Zijlstra for his help on this.

Signed-off-by: Stephane Eranian <eranian@gmail.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4d5e76b8.815bdf0a.7ac3.774f@mx.google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/perf_event.c