KVM: x86/pmu: Avoid setting BIT_ULL(-1) to pmu->host_cross_mapped_mask
authorLike Xu <likexu@tencent.com>
Wed, 31 Aug 2022 08:53:22 +0000 (16:53 +0800)
committerSean Christopherson <seanjc@google.com>
Wed, 28 Sep 2022 19:47:20 +0000 (12:47 -0700)
commitc23981df6642eec1da94a8125ec0ec402f7b1b7b
tree9928e4da36c800caf694c8572bad5a9e71053441
parent31d3b871f5ee9b195d90b4d14b74a7864209c6e8
KVM: x86/pmu: Avoid setting BIT_ULL(-1) to pmu->host_cross_mapped_mask

In the extreme case of host counters multiplexing and contention, the
perf_event requested by the guest's pebs counter is not allocated to any
actual physical counter, in which case hw.idx is bookkept as -1,
resulting in an out-of-bounds access to host_cross_mapped_mask.

Fixes: 854250329c02 ("KVM: x86/pmu: Disable guest PEBS temporarily in two rare situations")
Signed-off-by: Like Xu <likexu@tencent.com>
Link: https://lore.kernel.org/r/20220831085328.45489-2-likexu@tencent.com
[sean: expand comment to explain how a negative idx can be encountered]
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/pmu_intel.c