diff options
-rw-r--r-- | drivers/kvm/paging_tmpl.h | 5 |
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 | ||