Signed-off-by: Henry Sloan <henryksloan@xxxxxxxxx> --- virt/kvm/eventfd.c | 1 + virt/kvm/irqchip.c | 2 ++ virt/kvm/kvm_main.c | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 14aef85829ed..2e47bd13413e 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c @@ -195,6 +195,7 @@ irqfd_wakeup(wait_queue_entry_t *wait, unsigned int mode, int sync, void *key) if (flags & EPOLLIN) { u64 cnt; + eventfd_ctx_do_read(irqfd->eventfd, &cnt); idx = srcu_read_lock(&kvm->irq_srcu); diff --git a/virt/kvm/irqchip.c b/virt/kvm/irqchip.c index baa551aec010..69a327c043d7 100644 --- a/virt/kvm/irqchip.c +++ b/virt/kvm/irqchip.c @@ -86,6 +86,7 @@ int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level, while (i--) { int r; + r = irq_set[i].set(&irq_set[i], kvm, irq_source_id, level, line_status); if (r < 0) @@ -122,6 +123,7 @@ void kvm_free_irq_routing(struct kvm *kvm) /* Called only during vm destruction. Nobody can use the pointer at this stage */ struct kvm_irq_routing_table *rt = rcu_access_pointer(kvm->irq_routing); + free_irq_routing_table(rt); } diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index af74cf3b6446..1988dd081606 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2171,6 +2171,7 @@ static int kvm_clear_dirty_log_protect(struct kvm *kvm, i++, offset += BITS_PER_LONG) { unsigned long mask = *dirty_bitmap_buffer++; atomic_long_t *p = (atomic_long_t *) &dirty_bitmap[i]; + if (!mask) continue; @@ -2477,6 +2478,7 @@ static int hva_to_pfn_remapped(struct vm_area_struct *vma, * not call the fault handler, so do it here. */ bool unlocked = false; + r = fixup_user_fault(current->mm, addr, (write_fault ? FAULT_FLAG_WRITE : 0), &unlocked); @@ -3053,6 +3055,7 @@ int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, gpa_t gpa, unsigned long len) { struct kvm_memslots *slots = kvm_memslots(kvm); + return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len); } EXPORT_SYMBOL_GPL(kvm_gfn_to_hva_cache_init); @@ -3887,6 +3890,7 @@ static long kvm_vcpu_ioctl(struct file *filp, switch (ioctl) { case KVM_RUN: { struct pid *oldpid; + r = -EINVAL; if (arg) goto out; -- 2.35.1