diff options
Diffstat (limited to 'virt/kvm/async_pf.c')
-rw-r--r-- | virt/kvm/async_pf.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/virt/kvm/async_pf.c b/virt/kvm/async_pf.c index ea475cd03511..8a39dda7a325 100644 --- a/virt/kvm/async_pf.c +++ b/virt/kvm/async_pf.c | |||
@@ -101,8 +101,11 @@ void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu) | |||
101 | typeof(*work), queue); | 101 | typeof(*work), queue); |
102 | cancel_work_sync(&work->work); | 102 | cancel_work_sync(&work->work); |
103 | list_del(&work->queue); | 103 | list_del(&work->queue); |
104 | if (!work->done) /* work was canceled */ | 104 | if (!work->done) { /* work was canceled */ |
105 | mmdrop(work->mm); | ||
106 | kvm_put_kvm(vcpu->kvm); /* == work->vcpu->kvm */ | ||
105 | kmem_cache_free(async_pf_cache, work); | 107 | kmem_cache_free(async_pf_cache, work); |
108 | } | ||
106 | } | 109 | } |
107 | 110 | ||
108 | spin_lock(&vcpu->async_pf.lock); | 111 | spin_lock(&vcpu->async_pf.lock); |