diff options
| -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); |
