Skip to content

Commit

Permalink
KVM: arm64: PMU: Fix period computation for 64bit counters with 32bit…
Browse files Browse the repository at this point in the history
… overflow

Fix the bogus masking when computing the period of a 64bit counter
with 32bit overflow. It really should be treated like a 32bit counter
for the purpose of the period.

Reported-by: Ricardo Koller <ricarkol@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/Y4jbosgHbUDI0WF4@google.com
  • Loading branch information
Marc Zyngier committed Dec 5, 2022
1 parent 64d6820 commit 58ff656
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions arch/arm64/kvm/pmu-emul.c
Original file line number Diff line number Diff line change
Expand Up @@ -461,14 +461,10 @@ static u64 compute_period(struct kvm_pmc *pmc, u64 counter)
{
u64 val;

if (kvm_pmc_is_64bit(pmc)) {
if (!kvm_pmc_has_64bit_overflow(pmc))
val = -(counter & GENMASK(31, 0));
else
val = (-counter) & GENMASK(63, 0);
} else {
if (kvm_pmc_is_64bit(pmc) && kvm_pmc_has_64bit_overflow(pmc))
val = (-counter) & GENMASK(63, 0);
else
val = (-counter) & GENMASK(31, 0);
}

return val;
}
Expand Down

0 comments on commit 58ff656

Please sign in to comment.