Commit 33251870 authored by Radim Krčmář's avatar Radim Krčmář

KVM: nVMX: fix AD condition when handling EPT violation

I have introduced this bug when applying and simplifying Paolo's patch
as we agreed on the list.  The original was "x &= ~y; if (z) x |= y;".

Here is the story of a bad workflow:

  A maintainer was already testing with the intended change, but it was
  applied only to a testing repo on a different machine.  When the time
  to push tested patches to kvm/next came, he realized that this change
  was missing and quickly added it to the maintenance repo, didn't test
  again (because the change is trivial, right), and pushed the world to
  fire.

Fixes: ae1e2d10 ("kvm: nVMX: support EPT accessed/dirty bits")
Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
parent 405a353a
...@@ -6221,7 +6221,7 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu) ...@@ -6221,7 +6221,7 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)
* page table accesses are reads or writes. * page table accesses are reads or writes.
*/ */
u64 eptp = nested_ept_get_cr3(vcpu); u64 eptp = nested_ept_get_cr3(vcpu);
if (eptp & VMX_EPT_AD_ENABLE_BIT) if (!(eptp & VMX_EPT_AD_ENABLE_BIT))
exit_qualification &= ~EPT_VIOLATION_ACC_WRITE; exit_qualification &= ~EPT_VIOLATION_ACC_WRITE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment