diff options
author | Avi Kivity <avi@qumranet.com> | 2009-08-06 14:39:48 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-09-08 20:17:07 -0700 |
commit | 04051e5cf91f5ab9f13509cd0b16b61560556de0 (patch) | |
tree | 338744b328e03cd72d27545f679a350508307f47 /arch | |
parent | 5bd5d8e64fbb187d1ed4b320715a4580bd878997 (diff) |
KVM: MMU: Fix setting the accessed bit on non-speculative sptes
(cherry picked from commit 3201b5d9f0f7ef392886cd76dcd2c69186d9d5cd)
The accessed bit was accidentally turned on in a random flag word, rather
than, the spte itself, which was lucky, since it used the non-EPT compatible
PT_ACCESSED_MASK.
Fix by turning the bit on in the spte and changing it to use the portable
accessed mask.
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/mmu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 4c944941b0a..51ff937e551 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -1162,7 +1162,7 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte, */ spte = shadow_base_present_pte | shadow_dirty_mask; if (!speculative) - pte_access |= PT_ACCESSED_MASK; + spte |= shadow_accessed_mask; if (!dirty) pte_access &= ~ACC_WRITE_MASK; if (pte_access & ACC_EXEC_MASK) |