Message ID | 20200904104437.29555-4-sean.j.christopherson@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | x86/vdso: x86/sgx: Rework SGX vDSO API | expand |
On Fri, Sep 04, 2020 at 03:44:34AM -0700, Sean Christopherson wrote: > Use dedicated exit reasons, e.g. SYNCHRONOUS and EXCEPTION, instead of > '0' and '-EFAULT' respectively. Using -EFAULT is less than desirable as > it usually means "bad address", which may or may not be true for a fault > in the enclave or on ENCLU. > > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> I agree with the change but I think this a the main reason for merging this change: since we have the IO structure it is not coherent to not have all IO data there that can be put there. Better to have everything in one place when possible. Ack-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> /Jarkko
diff --git a/arch/x86/entry/vdso/vsgx_enter_enclave.S b/arch/x86/entry/vdso/vsgx_enter_enclave.S index 4fe3d06dd7878..adbd59d415171 100644 --- a/arch/x86/entry/vdso/vsgx_enter_enclave.S +++ b/arch/x86/entry/vdso/vsgx_enter_enclave.S @@ -18,6 +18,9 @@ /* #define SGX_ENCLAVE_RUN_USER_DATA 3*8 */ #define SGX_ENCLAVE_RUN_EXCEPTION 4*8 +#define SGX_SYNCHRONOUS_EXIT 0 +#define SGX_EXCEPTION_EXIT 1 + /* Offsets into sgx_enter_enclave.exception. */ #define SGX_EX_LEAF 0*8 #define SGX_EX_TRAPNR 0*8+4 @@ -65,7 +68,7 @@ SYM_FUNC_START(__vdso_sgx_enter_enclave) mov SGX_ENCLAVE_RUN_PTR(%rbp), %rbx /* Set exit_reason. */ - movl $0, SGX_ENCLAVE_RUN_EXIT_REASON(%rbx) + movl $SGX_SYNCHRONOUS_EXIT, SGX_ENCLAVE_RUN_EXIT_REASON(%rbx) /* Invoke userspace's exit handler if one was provided. */ .Lhandle_exit: @@ -92,7 +95,7 @@ SYM_FUNC_START(__vdso_sgx_enter_enclave) mov SGX_ENCLAVE_RUN_PTR(%rbp), %rbx /* Set the exit_reason and exception info. */ - movl $(-EFAULT), SGX_ENCLAVE_RUN_EXIT_REASON(%rbx) + movl $SGX_EXCEPTION_EXIT, SGX_ENCLAVE_RUN_EXIT_REASON(%rbx) mov %eax, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_LEAF)(%rbx) mov %di, (SGX_ENCLAVE_RUN_EXCEPTION + SGX_EX_TRAPNR)(%rbx) diff --git a/arch/x86/include/uapi/asm/sgx.h b/arch/x86/include/uapi/asm/sgx.h index 608daccc46553..b1d63f90ad643 100644 --- a/arch/x86/include/uapi/asm/sgx.h +++ b/arch/x86/include/uapi/asm/sgx.h @@ -74,6 +74,9 @@ struct sgx_enclave_provision { __u64 attribute_fd; }; +#define SGX_SYNCHRONOUS_EXIT 0 +#define SGX_EXCEPTION_EXIT 1 + struct sgx_enclave_run; /**
Use dedicated exit reasons, e.g. SYNCHRONOUS and EXCEPTION, instead of '0' and '-EFAULT' respectively. Using -EFAULT is less than desirable as it usually means "bad address", which may or may not be true for a fault in the enclave or on ENCLU. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> --- arch/x86/entry/vdso/vsgx_enter_enclave.S | 7 +++++-- arch/x86/include/uapi/asm/sgx.h | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-)