aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/kvm/paging_tmpl.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/kvm/paging_tmpl.h b/drivers/kvm/paging_tmpl.h
index a0f84a5379a..a9e687b5c1e 100644
--- a/drivers/kvm/paging_tmpl.h
+++ b/drivers/kvm/paging_tmpl.h
@@ -74,9 +74,14 @@ static void FNAME(update_dirty_bit)(struct kvm_vcpu *vcpu,
74 pt_element_t *ptep, 74 pt_element_t *ptep,
75 gfn_t table_gfn) 75 gfn_t table_gfn)
76{ 76{
77 gpa_t pte_gpa;
78
77 if (write_fault && !is_dirty_pte(*ptep)) { 79 if (write_fault && !is_dirty_pte(*ptep)) {
78 mark_page_dirty(vcpu->kvm, table_gfn); 80 mark_page_dirty(vcpu->kvm, table_gfn);
79 *ptep |= PT_DIRTY_MASK; 81 *ptep |= PT_DIRTY_MASK;
82 pte_gpa = ((gpa_t)table_gfn << PAGE_SHIFT);
83 pte_gpa += offset_in_page(ptep);
84 kvm_mmu_pte_write(vcpu, pte_gpa, (u8 *)ptep, sizeof(*ptep));
80 } 85 }
81} 86}
82 87