From: Marcelo Tosatti Date: Thu, 29 Oct 2009 15:44:17 +0000 (-0200) Subject: KVM: only clear irq_source_id if irqchip is present X-Git-Tag: firefly_0821_release~11625^2~176 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=454f8b167c06886ab7d469c889d9cca613398431;p=firefly-linux-kernel-4.4.55.git KVM: only clear irq_source_id if irqchip is present commit e50212bb51356f0df48d6cce0aae5acf41df336d upstream. Otherwise kvm might attempt to dereference a NULL pointer. Signed-off-by: Marcelo Tosatti Signed-off-by: Avi Kivity Signed-off-by: Greg Kroah-Hartman --- diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c index ddc388e565fc..5288885637b1 100644 --- a/virt/kvm/irq_comm.c +++ b/virt/kvm/irq_comm.c @@ -233,9 +233,12 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id) printk(KERN_ERR "kvm: IRQ source ID out of range!\n"); goto unlock; } + clear_bit(irq_source_id, &kvm->arch.irq_sources_bitmap); + if (!irqchip_in_kernel(kvm)) + goto unlock; + for (i = 0; i < KVM_IOAPIC_NUM_PINS; i++) clear_bit(irq_source_id, &kvm->arch.irq_states[i]); - clear_bit(irq_source_id, &kvm->arch.irq_sources_bitmap); unlock: mutex_unlock(&kvm->irq_lock); }