perf_events: Fix stale ->cgrp pointer in update_cgrp_time_from_cpuctx()
authorStephane Eranian <eranian@google.com>
Wed, 23 Mar 2011 15:03:06 +0000 (16:03 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 23 Mar 2011 15:07:22 +0000 (16:07 +0100)
commit68cacd29167b1926d237bd1b153aa2a990201729
treed4359e9e0a1fa88b569e0c8a20aede435d916fee
parentce2d17ca7f85dcade62cd608601a0d52ccdaf0e6
perf_events: Fix stale ->cgrp pointer in update_cgrp_time_from_cpuctx()

This patch solves a stale pointer problem in
update_cgrp_time_from_cpuctx(). The cpuctx->cgrp
was not cleared on all possible event exit paths,
including:

   close()
     perf_release()
       perf_release_kernel()
         list_del_event()

This patch fixes list_del_event() to clear cpuctx->cgrp
when there are no cgroup events left in the context.

[ This second version makes the code compile when
  CONFIG_CGROUP_PERF is not enabled. We unconditionally define
  perf_cpu_context->cgrp. ]

Signed-off-by: Stephane Eranian <eranian@google.com>
Cc: peterz@infradead.org
Cc: perfmon2-devel@lists.sf.net
Cc: paulus@samba.org
Cc: davem@davemloft.net
LKML-Reference: <20110323150306.GA1580@quad>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/perf_event.h
kernel/perf_event.c