Commit 0ea9494b authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: x86: WARN if hrtimer callback for periodic APIC timer fires with period=0

WARN and don't restart the hrtimer if KVM's callback runs with the guest's
APIC timer in periodic mode but with a period of '0', as not advancing the
hrtimer's deadline would put the CPU into an infinite loop of hrtimer
events.  Observing a period of '0' should be impossible, even when the
hrtimer is running on a different CPU than the vCPU, as KVM is supposed to
cancel the hrtimer before changing (or zeroing) the period, e.g. when
switching from periodic to one-shot.

Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20251113205114.1647493-2-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent b3e5b670
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2970,7 +2970,7 @@ static enum hrtimer_restart apic_timer_fn(struct hrtimer *data)

	apic_timer_expired(apic, true);

	if (lapic_is_periodic(apic)) {
	if (lapic_is_periodic(apic) && !WARN_ON_ONCE(!apic->lapic_timer.period)) {
		advance_periodic_target_expiration(apic);
		hrtimer_add_expires_ns(&ktimer->timer, ktimer->period);
		return HRTIMER_RESTART;