Message ID | 20230404032502.27798-1-binbin.wu@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: VMX: Use is_64_bit_mode() to check 64-bit mode in SGX handler | expand |
On Tue, 04 Apr 2023 11:25:02 +0800, Binbin Wu wrote: > sgx_get_encls_gva() uses is_long_mode() to check 64-bit mode, however, > SGX system leaf instructions are valid in compatibility mode, should > use is_64_bit_mode() instead. Applied to kvm-x86 vmx, thanks! I'm still dumbfounded that ENCLS is allowed in compatibility mode :-) [1/1] KVM: VMX: Use is_64_bit_mode() to check 64-bit mode in SGX handler https://github.com/kvm-x86/linux/commit/548bd27428b9 -- https://github.com/kvm-x86/linux/tree/next https://github.com/kvm-x86/linux/tree/fixes
diff --git a/arch/x86/kvm/vmx/sgx.c b/arch/x86/kvm/vmx/sgx.c index aa53c98034bf..0574030b071f 100644 --- a/arch/x86/kvm/vmx/sgx.c +++ b/arch/x86/kvm/vmx/sgx.c @@ -29,14 +29,14 @@ static int sgx_get_encls_gva(struct kvm_vcpu *vcpu, unsigned long offset, /* Skip vmcs.GUEST_DS retrieval for 64-bit mode to avoid VMREADs. */ *gva = offset; - if (!is_long_mode(vcpu)) { + if (!is_64_bit_mode(vcpu)) { vmx_get_segment(vcpu, &s, VCPU_SREG_DS); *gva += s.base; } if (!IS_ALIGNED(*gva, alignment)) { fault = true; - } else if (likely(is_long_mode(vcpu))) { + } else if (likely(is_64_bit_mode(vcpu))) { fault = is_noncanonical_address(*gva, vcpu); } else { *gva &= 0xffffffff;