diff options
author | Sean Christopherson <seanjc@google.com> | 2022-09-30 23:31:32 +0000 |
---|---|---|
committer | Sean Christopherson <seanjc@google.com> | 2022-11-30 15:55:25 -0800 |
commit | eb3992e833d3a17f9b0a3e0371d0b1d3d566f740 (patch) | |
tree | 298acd26ee8151b9dab5cff325a73ed22d79bec9 /arch | |
parent | df0bb47baa95aad133820b149851d5b94cbc6790 (diff) | |
download | linux-stable-eb3992e833d3a17f9b0a3e0371d0b1d3d566f740.tar.gz linux-stable-eb3992e833d3a17f9b0a3e0371d0b1d3d566f740.tar.bz2 linux-stable-eb3992e833d3a17f9b0a3e0371d0b1d3d566f740.zip |
KVM: VMX: Resume guest immediately when injecting #GP on ECREATE
Resume the guest immediately when injecting a #GP on ECREATE due to an
invalid enclave size, i.e. don't attempt ECREATE in the host. The #GP is
a terminal fault, e.g. skipping the instruction if ECREATE is successful
would result in KVM injecting #GP on the instruction following ECREATE.
Fixes: 70210c044b4e ("KVM: VMX: Add SGX ENCLS[ECREATE] handler to enforce CPUID restrictions")
Cc: stable@vger.kernel.org
Cc: Kai Huang <kai.huang@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/r/20220930233132.1723330-1-seanjc@google.com
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/vmx/sgx.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/x86/kvm/vmx/sgx.c b/arch/x86/kvm/vmx/sgx.c index 8f95c7c01433..b12da2a6dec9 100644 --- a/arch/x86/kvm/vmx/sgx.c +++ b/arch/x86/kvm/vmx/sgx.c @@ -182,8 +182,10 @@ static int __handle_encls_ecreate(struct kvm_vcpu *vcpu, /* Enforce CPUID restriction on max enclave size. */ max_size_log2 = (attributes & SGX_ATTR_MODE64BIT) ? sgx_12_0->edx >> 8 : sgx_12_0->edx; - if (size >= BIT_ULL(max_size_log2)) + if (size >= BIT_ULL(max_size_log2)) { kvm_inject_gp(vcpu, 0); + return 1; + } /* * sgx_virt_ecreate() returns: |