diff options
| -rw-r--r-- | arch/x86/kvm/mmu.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index eca41ae9f453..6c67b230e958 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
| @@ -634,9 +634,7 @@ static void rmap_remove(struct kvm *kvm, u64 *spte) | |||
| 634 | if (*spte & shadow_accessed_mask) | 634 | if (*spte & shadow_accessed_mask) |
| 635 | kvm_set_pfn_accessed(pfn); | 635 | kvm_set_pfn_accessed(pfn); |
| 636 | if (is_writeble_pte(*spte)) | 636 | if (is_writeble_pte(*spte)) |
| 637 | kvm_release_pfn_dirty(pfn); | 637 | kvm_set_pfn_dirty(pfn); |
| 638 | else | ||
| 639 | kvm_release_pfn_clean(pfn); | ||
| 640 | rmapp = gfn_to_rmap(kvm, sp->gfns[spte - sp->spt], sp->role.level); | 638 | rmapp = gfn_to_rmap(kvm, sp->gfns[spte - sp->spt], sp->role.level); |
| 641 | if (!*rmapp) { | 639 | if (!*rmapp) { |
| 642 | printk(KERN_ERR "rmap_remove: %p %llx 0->BUG\n", spte, *spte); | 640 | printk(KERN_ERR "rmap_remove: %p %llx 0->BUG\n", spte, *spte); |
| @@ -1877,8 +1875,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep, | |||
| 1877 | page_header_update_slot(vcpu->kvm, sptep, gfn); | 1875 | page_header_update_slot(vcpu->kvm, sptep, gfn); |
| 1878 | if (!was_rmapped) { | 1876 | if (!was_rmapped) { |
| 1879 | rmap_count = rmap_add(vcpu, sptep, gfn); | 1877 | rmap_count = rmap_add(vcpu, sptep, gfn); |
| 1880 | if (!is_rmap_spte(*sptep)) | 1878 | kvm_release_pfn_clean(pfn); |
| 1881 | kvm_release_pfn_clean(pfn); | ||
| 1882 | if (rmap_count > RMAP_RECYCLE_THRESHOLD) | 1879 | if (rmap_count > RMAP_RECYCLE_THRESHOLD) |
| 1883 | rmap_recycle(vcpu, sptep, gfn); | 1880 | rmap_recycle(vcpu, sptep, gfn); |
| 1884 | } else { | 1881 | } else { |
