perf events: Fix event inherit fallout of precalculated headers
authorThomas Gleixner <tglx@linutronix.de>
Fri, 3 Dec 2010 18:24:32 +0000 (16:24 -0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Sun, 5 Dec 2010 00:56:11 +0000 (22:56 -0200)
The precalculated header size is not updated when an event is inherited. That
results in bogus sample entries for all child events. Bug introduced in c320c7b.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ian Munsie <imunsie@au1.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
LKML-Reference: <alpine.LFD.2.00.1012031245220.2653@localhost6.localdomain6>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
kernel/perf_event.c

index aede712..7961b27 100644 (file)
@@ -6098,6 +6098,11 @@ inherit_event(struct perf_event *parent_event,
        child_event->ctx = child_ctx;
        child_event->overflow_handler = parent_event->overflow_handler;
 
+       /*
+        * Precalculate sample_data sizes
+        */
+       perf_event__header_size(child_event);
+
        /*
         * Link it up in the child's context:
         */