]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86: Bug the VM, not the kernel, if the ISR count {under,over}flows
authorSean Christopherson <seanjc@google.com>
Thu, 18 Jun 2026 18:53:50 +0000 (11:53 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 24 Jun 2026 09:52:54 +0000 (11:52 +0200)
Bug the VM, not the host kernel, if KVM's ISR count {under,over}flows when
tracking in-flight ISRs.  There is zero danger to the host if KVM messes up
its IRQ tracking.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Message-ID: <20260618185350.2020845-1-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/lapic.c

index 9d2df8623f6d1ccf67eb2ce1cb0a258d9648f407..e733ca6b97921cba9c7349e7a8ba092e5f152443 100644 (file)
@@ -767,7 +767,7 @@ static inline void apic_set_isr(int vec, struct kvm_lapic *apic)
                kvm_x86_call(hwapic_isr_update)(apic->vcpu, vec);
        else {
                ++apic->isr_count;
-               BUG_ON(apic->isr_count > MAX_APIC_VECTOR);
+               KVM_BUG_ON(apic->isr_count > MAX_APIC_VECTOR, apic->vcpu->kvm);
                /*
                 * ISR (in service register) bit is set when injecting an interrupt.
                 * The highest vector is injected. Thus the latest bit set matches
@@ -808,7 +808,7 @@ static inline void apic_clear_isr(int vec, struct kvm_lapic *apic)
                kvm_x86_call(hwapic_isr_update)(apic->vcpu, apic_find_highest_isr(apic));
        else {
                --apic->isr_count;
-               BUG_ON(apic->isr_count < 0);
+               KVM_BUG_ON(apic->isr_count < 0, apic->vcpu->kvm);
                apic->highest_isr_cache = -1;
        }
 }