diff options
-rw-r--r-- | arch/x86/include/asm/kvm_host.h | 1 | ||||
-rw-r--r-- | arch/x86/kvm/mmu.c | 6 | ||||
-rw-r--r-- | arch/x86/kvm/paging_tmpl.h | 2 |
3 files changed, 2 insertions, 7 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 37bd730ff852..f08314f303e0 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h | |||
@@ -336,7 +336,6 @@ struct kvm_vcpu_arch { | |||
336 | gfn_t last_pte_gfn; | 336 | gfn_t last_pte_gfn; |
337 | 337 | ||
338 | struct { | 338 | struct { |
339 | gfn_t gfn; /* presumed gfn during guest pte update */ | ||
340 | pfn_t pfn; /* pfn corresponding to that gfn */ | 339 | pfn_t pfn; /* pfn corresponding to that gfn */ |
341 | unsigned long mmu_seq; | 340 | unsigned long mmu_seq; |
342 | } update_pte; | 341 | } update_pte; |
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index d5455b1b725f..91a194667432 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -3228,7 +3228,6 @@ static void mmu_guess_page_from_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa, | |||
3228 | kvm_release_pfn_clean(pfn); | 3228 | kvm_release_pfn_clean(pfn); |
3229 | return; | 3229 | return; |
3230 | } | 3230 | } |
3231 | vcpu->arch.update_pte.gfn = gfn; | ||
3232 | vcpu->arch.update_pte.pfn = pfn; | 3231 | vcpu->arch.update_pte.pfn = pfn; |
3233 | } | 3232 | } |
3234 | 3233 | ||
@@ -3275,9 +3274,8 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa, | |||
3275 | 3274 | ||
3276 | /* | 3275 | /* |
3277 | * Assume that the pte write on a page table of the same type | 3276 | * Assume that the pte write on a page table of the same type |
3278 | * as the current vcpu paging mode. This is nearly always true | 3277 | * as the current vcpu paging mode since we update the sptes only |
3279 | * (might be false while changing modes). Note it is verified later | 3278 | * when they have the same mode. |
3280 | * by update_pte(). | ||
3281 | */ | 3279 | */ |
3282 | if ((is_pae(vcpu) && bytes == 4) || !new) { | 3280 | if ((is_pae(vcpu) && bytes == 4) || !new) { |
3283 | /* Handle a 32-bit guest writing two halves of a 64-bit gpte */ | 3281 | /* Handle a 32-bit guest writing two halves of a 64-bit gpte */ |
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 6bccc24c4181..b3862eeabb8a 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h | |||
@@ -339,8 +339,6 @@ static void FNAME(update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, | |||
339 | 339 | ||
340 | pgprintk("%s: gpte %llx spte %p\n", __func__, (u64)gpte, spte); | 340 | pgprintk("%s: gpte %llx spte %p\n", __func__, (u64)gpte, spte); |
341 | pte_access = sp->role.access & FNAME(gpte_access)(vcpu, gpte); | 341 | pte_access = sp->role.access & FNAME(gpte_access)(vcpu, gpte); |
342 | if (gpte_to_gfn(gpte) != vcpu->arch.update_pte.gfn) | ||
343 | return; | ||
344 | pfn = vcpu->arch.update_pte.pfn; | 342 | pfn = vcpu->arch.update_pte.pfn; |
345 | if (is_error_pfn(pfn)) | 343 | if (is_error_pfn(pfn)) |
346 | return; | 344 | return; |