Message ID | 20191001162123.26992-1-sean.j.christopherson@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: nVMX: Fix consistency check on injected exception error code | expand |
On Tue, Oct 1, 2019 at 9:21 AM Sean Christopherson <sean.j.christopherson@intel.com> wrote: > > Current versions of Intel's SDM incorrectly state that "bits 31:15 of > the VM-Entry exception error-code field" must be zero. In reality, bits > 31:16 must be zero, i.e. error codes are 16-bit values. > > The bogus error code check manifests as an unexpected VM-Entry failure > due to an invalid code field (error number 7) in L1, e.g. when injecting > a #GP with error_code=0x9f00. > > Nadav previously reported the bug[*], both to KVM and Intel, and fixed > the associated kvm-unit-test. > > [*] https://patchwork.kernel.org/patch/11124749/ > > Reported-by: Nadav Amit <namit@vmware.com> > Cc: stable@vger.kernel.org > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Reviewed-by: Jim Mattson <jmattson@google.com>
On 01/10/19 18:28, Jim Mattson wrote:
> Reviewed-by: Jim Mattson <jmattson@google.com>
Queued, thanks.
Paolo
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index 41abc62c9a8a..e76eb4f07f6c 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -2610,7 +2610,7 @@ static int nested_check_vm_entry_controls(struct kvm_vcpu *vcpu, /* VM-entry exception error code */ if (CC(has_error_code && - vmcs12->vm_entry_exception_error_code & GENMASK(31, 15))) + vmcs12->vm_entry_exception_error_code & GENMASK(31, 16))) return -EINVAL; /* VM-entry interruption-info field: reserved bits */
Current versions of Intel's SDM incorrectly state that "bits 31:15 of the VM-Entry exception error-code field" must be zero. In reality, bits 31:16 must be zero, i.e. error codes are 16-bit values. The bogus error code check manifests as an unexpected VM-Entry failure due to an invalid code field (error number 7) in L1, e.g. when injecting a #GP with error_code=0x9f00. Nadav previously reported the bug[*], both to KVM and Intel, and fixed the associated kvm-unit-test. [*] https://patchwork.kernel.org/patch/11124749/ Reported-by: Nadav Amit <namit@vmware.com> Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> --- arch/x86/kvm/vmx/nested.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)