From: "tip-bot2 for Peter Zijlstra" <tip-bot2@linutronix.de> To: linux-tip-commits@vger.kernel.org Cc: Vince Weaver <vincent.weaver@maine.edu>, "Peter Zijlstra (Intel)" <peterz@infradead.org>, Like Xu <likexu@tencent.com>, x86@kernel.org, linux-kernel@vger.kernel.org Subject: [tip: perf/urgent] perf/x86: Fix out of bound MSR access Date: Thu, 05 Aug 2021 09:34:29 -0000 [thread overview] Message-ID: <162815606939.395.6416699769104597019.tip-bot2@tip-bot2> (raw) In-Reply-To: <YQJxka3dxgdIdebG@hirez.programming.kicks-ass.net> The following commit has been merged into the perf/urgent branch of tip: Commit-ID: f4b4b45652578357031fbbef7f7a1b04f6fa2dc3 Gitweb: https://git.kernel.org/tip/f4b4b45652578357031fbbef7f7a1b04f6fa2dc3 Author: Peter Zijlstra <peterz@infradead.org> AuthorDate: Thu, 29 Jul 2021 11:14:57 +02:00 Committer: Peter Zijlstra <peterz@infradead.org> CommitterDate: Wed, 04 Aug 2021 15:16:33 +02:00 perf/x86: Fix out of bound MSR access On Wed, Jul 28, 2021 at 12:49:43PM -0400, Vince Weaver wrote: > [32694.087403] unchecked MSR access error: WRMSR to 0x318 (tried to write 0x0000000000000000) at rIP: 0xffffffff8106f854 (native_write_msr+0x4/0x20) > [32694.101374] Call Trace: > [32694.103974] perf_clear_dirty_counters+0x86/0x100 The problem being that it doesn't filter out all fake counters, in specific the above (erroneously) tries to use FIXED_BTS. Limit the fixed counters indexes to the hardware supplied number. Reported-by: Vince Weaver <vincent.weaver@maine.edu> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Tested-by: Vince Weaver <vincent.weaver@maine.edu> Tested-by: Like Xu <likexu@tencent.com> Link: https://lkml.kernel.org/r/YQJxka3dxgdIdebG@hirez.programming.kicks-ass.net --- arch/x86/events/core.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index 1eb4513..3092fbf 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -2489,13 +2489,15 @@ void perf_clear_dirty_counters(void) return; for_each_set_bit(i, cpuc->dirty, X86_PMC_IDX_MAX) { - /* Metrics and fake events don't have corresponding HW counters. */ - if (is_metric_idx(i) || (i == INTEL_PMC_IDX_FIXED_VLBR)) - continue; - else if (i >= INTEL_PMC_IDX_FIXED) + if (i >= INTEL_PMC_IDX_FIXED) { + /* Metrics and fake events don't have corresponding HW counters. */ + if ((i - INTEL_PMC_IDX_FIXED) >= hybrid(cpuc->pmu, num_counters_fixed)) + continue; + wrmsrl(MSR_ARCH_PERFMON_FIXED_CTR0 + (i - INTEL_PMC_IDX_FIXED), 0); - else + } else { wrmsrl(x86_pmu_event_addr(i), 0); + } } bitmap_zero(cpuc->dirty, X86_PMC_IDX_MAX);
prev parent reply other threads:[~2021-08-05 9:34 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-28 16:49 [perf] fuzzer triggers unchecked MSR access error: WRMSR to 0x318 Vince Weaver 2021-07-29 9:14 ` Peter Zijlstra 2021-07-29 13:21 ` Liang, Kan 2021-07-29 15:30 ` Peter Zijlstra 2021-08-02 11:40 ` Like Xu 2021-07-29 16:54 ` Vince Weaver 2021-08-05 9:34 ` tip-bot2 for Peter Zijlstra [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=162815606939.395.6416699769104597019.tip-bot2@tip-bot2 \ --to=tip-bot2@linutronix.de \ --cc=likexu@tencent.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-tip-commits@vger.kernel.org \ --cc=peterz@infradead.org \ --cc=vincent.weaver@maine.edu \ --cc=x86@kernel.org \ --subject='Re: [tip: perf/urgent] perf/x86: Fix out of bound MSR access' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.