WARN and return an error up the stack if the PIC or I/O APIC encounters an
invalid vector when injecting an IRQ, as there is no danger to the host and
thus no justification for potentially panicking the kernel. Don't bug the
VM either, as the risk of corrupting the guest is minuscule, and the guest
might even be completely tolerant of a lost interrupt.
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Message-ID: <
20260618185213.
2019937-1-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
int irq = e->irqchip.pin;
int ret, irq_level;
- BUG_ON(irq < 0 || irq >= PIC_NUM_PINS);
+ if (WARN_ON_ONCE(irq < 0 || irq >= PIC_NUM_PINS))
+ return -1;
pic_lock(s);
irq_level = __kvm_irq_line_state(&s->irq_states[irq],
int irq = e->irqchip.pin;
int ret, irq_level;
- BUG_ON(irq < 0 || irq >= IOAPIC_NUM_PINS);
+ if (WARN_ON_ONCE(irq < 0 || irq >= IOAPIC_NUM_PINS))
+ return -1;
spin_lock(&ioapic->lock);
irq_level = __kvm_irq_line_state(&ioapic->irq_states[irq],