diff options
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/irq_comm.c | 8 | ||||
-rw-r--r-- | virt/kvm/kvm_main.c | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c index 55ad76ee2d09..9fbbdea3d1d5 100644 --- a/virt/kvm/irq_comm.c +++ b/virt/kvm/irq_comm.c | |||
@@ -58,12 +58,16 @@ void kvm_notify_acked_irq(struct kvm *kvm, unsigned gsi) | |||
58 | void kvm_register_irq_ack_notifier(struct kvm *kvm, | 58 | void kvm_register_irq_ack_notifier(struct kvm *kvm, |
59 | struct kvm_irq_ack_notifier *kian) | 59 | struct kvm_irq_ack_notifier *kian) |
60 | { | 60 | { |
61 | /* Must be called with in-kernel IRQ chip, otherwise it's nonsense */ | ||
62 | ASSERT(irqchip_in_kernel(kvm)); | ||
63 | ASSERT(kian); | ||
61 | hlist_add_head(&kian->link, &kvm->arch.irq_ack_notifier_list); | 64 | hlist_add_head(&kian->link, &kvm->arch.irq_ack_notifier_list); |
62 | } | 65 | } |
63 | 66 | ||
64 | void kvm_unregister_irq_ack_notifier(struct kvm *kvm, | 67 | void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian) |
65 | struct kvm_irq_ack_notifier *kian) | ||
66 | { | 68 | { |
69 | if (!kian) | ||
70 | return; | ||
67 | hlist_del(&kian->link); | 71 | hlist_del(&kian->link); |
68 | } | 72 | } |
69 | 73 | ||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index a87f45edfae8..4f43abe198e4 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -143,7 +143,7 @@ static void kvm_free_assigned_device(struct kvm *kvm, | |||
143 | if (irqchip_in_kernel(kvm) && assigned_dev->irq_requested) | 143 | if (irqchip_in_kernel(kvm) && assigned_dev->irq_requested) |
144 | free_irq(assigned_dev->host_irq, (void *)assigned_dev); | 144 | free_irq(assigned_dev->host_irq, (void *)assigned_dev); |
145 | 145 | ||
146 | kvm_unregister_irq_ack_notifier(kvm, &assigned_dev->ack_notifier); | 146 | kvm_unregister_irq_ack_notifier(&assigned_dev->ack_notifier); |
147 | kvm_free_irq_source_id(kvm, assigned_dev->irq_source_id); | 147 | kvm_free_irq_source_id(kvm, assigned_dev->irq_source_id); |
148 | 148 | ||
149 | if (cancel_work_sync(&assigned_dev->interrupt_work)) | 149 | if (cancel_work_sync(&assigned_dev->interrupt_work)) |