perf_counter: Fix counter inheritance
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Fri, 15 May 2009 18:45:59 +0000 (20:45 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 17 May 2009 05:52:24 +0000 (07:52 +0200)
commit856d56b9e5de650a64a6c41c17aaed702b55d578
treeaf2fcfe19f0ab27fa220216285e4703ecc7887e1
parent8bc2095951517e2c74b8aeeca4685ddd6b16ed4b
perf_counter: Fix counter inheritance

Srivatsa Vaddagiri reported that a Java workload triggers this
warning in kernel/exit.c:

   WARN_ON_ONCE(!list_empty(&tsk->perf_counter_ctx.counter_list));

Add the inherited counter propagation on self-detach, this could
cause counter leaks and incomplete stats in threaded code like
the below:

  #include <pthread.h>
  #include <unistd.h>

  void *thread(void *arg)
  {
          sleep(5);
          return NULL;
  }

  void main(void)
  {
          pthread_t thr;
          pthread_create(&thr, NULL, thread, NULL);
  }

Reported-by: Srivatsa Vaddagiri <vatsa@in.ibm.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/exit.c