Prev: [tip:perf/core] perf, x86: P4 PMU -- add missing bit in CCCR mask
Next: [tip:core/urgent] mutex: Fix optimistic spinning vs. BKL
From: tip-bot for Cyrill Gorcunov on 19 May 2010 04:00 Commit-ID: 623aab896ee1a532cb540bcf0d5ae8a88275afd5 Gitweb: http://git.kernel.org/tip/623aab896ee1a532cb540bcf0d5ae8a88275afd5 Author: Cyrill Gorcunov <gorcunov(a)openvz.org> AuthorDate: Wed, 19 May 2010 01:19:17 +0400 Committer: Ingo Molnar <mingo(a)elte.hu> CommitDate: Wed, 19 May 2010 09:41:05 +0200 perf, x86: P4 PMU -- do a real check for ESCR address being in hash To prevent from clashes in future code modifications do a real check for ESCR address being in hash. At moment the callers are known to pass sane values but better to be on a safe side. And comment fix. Signed-off-by: Cyrill Gorcunov <gorcunov(a)openvz.org> CC: Lin Ming <ming.m.lin(a)intel.com> CC: Peter Zijlstra <a.p.zijlstra(a)chello.nl> CC: Frederic Weisbecker <fweisbec(a)gmail.com> LKML-Reference: <20100518212439.004503600(a)openvz.org> Signed-off-by: Ingo Molnar <mingo(a)elte.hu> --- arch/x86/kernel/cpu/perf_event_p4.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/perf_event_p4.c b/arch/x86/kernel/cpu/perf_event_p4.c index 87e1803..5f8e36d 100644 --- a/arch/x86/kernel/cpu/perf_event_p4.c +++ b/arch/x86/kernel/cpu/perf_event_p4.c @@ -670,7 +670,7 @@ static void p4_pmu_swap_config_ts(struct hw_perf_event *hwc, int cpu) /* * ESCR address hashing is tricky, ESCRs are not sequential - * in memory but all starts from MSR_P4_BSU_ESCR0 (0x03e0) and + * in memory but all starts from MSR_P4_BSU_ESCR0 (0x03a0) and * the metric between any ESCRs is laid in range [0xa0,0xe1] * * so we make ~70% filled hashtable @@ -735,8 +735,9 @@ static int p4_get_escr_idx(unsigned int addr) { unsigned int idx = P4_ESCR_MSR_IDX(addr); - if (unlikely(idx >= P4_ESCR_MSR_TABLE_SIZE || - !p4_escr_table[idx])) { + if (unlikely(idx >= P4_ESCR_MSR_TABLE_SIZE || + !p4_escr_table[idx] || + p4_escr_table[idx] != addr)) { WARN_ONCE(1, "P4 PMU: Wrong address passed: %x\n", addr); return -1; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |