diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2010-03-03 09:55:04 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-03-10 07:22:23 -0500 |
commit | dc1d628a67a8f042e711ea5accc0beedc3ef0092 (patch) | |
tree | 728f72a5f9a8368b225890a95ea947c1c8cda301 /arch/x86/kernel/cpu/perf_event_intel.c | |
parent | 548b84166917d6f5e2296123b85ad24aecd3801d (diff) |
perf: Provide generic perf_sample_data initialization
This makes it easier to extend perf_sample_data and fixes a bug on arm
and sparc, which failed to set ->raw to NULL, which can cause crashes
when combined with PERF_SAMPLE_RAW.
It also optimizes PowerPC and tracepoint, because the struct
initialization is forced to zero out the whole structure.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Jean Pihet <jpihet@mvista.com>
Reviewed-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Jamie Iles <jamie.iles@picochip.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: stable@kernel.org
LKML-Reference: <20100304140100.315416040@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/perf_event_intel.c')
-rw-r--r-- | arch/x86/kernel/cpu/perf_event_intel.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index 73102df8bfc1..44b60c852107 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c | |||
@@ -590,10 +590,9 @@ static void intel_pmu_drain_bts_buffer(void) | |||
590 | 590 | ||
591 | ds->bts_index = ds->bts_buffer_base; | 591 | ds->bts_index = ds->bts_buffer_base; |
592 | 592 | ||
593 | perf_sample_data_init(&data, 0); | ||
593 | 594 | ||
594 | data.period = event->hw.last_period; | 595 | data.period = event->hw.last_period; |
595 | data.addr = 0; | ||
596 | data.raw = NULL; | ||
597 | regs.ip = 0; | 596 | regs.ip = 0; |
598 | 597 | ||
599 | /* | 598 | /* |
@@ -742,8 +741,7 @@ static int intel_pmu_handle_irq(struct pt_regs *regs) | |||
742 | int bit, loops; | 741 | int bit, loops; |
743 | u64 ack, status; | 742 | u64 ack, status; |
744 | 743 | ||
745 | data.addr = 0; | 744 | perf_sample_data_init(&data, 0); |
746 | data.raw = NULL; | ||
747 | 745 | ||
748 | cpuc = &__get_cpu_var(cpu_hw_events); | 746 | cpuc = &__get_cpu_var(cpu_hw_events); |
749 | 747 | ||