| From eb3992e833d3a17f9b0a3e0371d0b1d3d566f740 Mon Sep 17 00:00:00 2001 |
| From: Sean Christopherson <seanjc@google.com> |
| Date: Fri, 30 Sep 2022 23:31:32 +0000 |
| Subject: KVM: VMX: Resume guest immediately when injecting #GP on ECREATE |
| |
| From: Sean Christopherson <seanjc@google.com> |
| |
| commit eb3992e833d3a17f9b0a3e0371d0b1d3d566f740 upstream. |
| |
| 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 |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kvm/vmx/sgx.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/arch/x86/kvm/vmx/sgx.c |
| +++ b/arch/x86/kvm/vmx/sgx.c |
| @@ -182,8 +182,10 @@ static int __handle_encls_ecreate(struct |
| /* 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: |