From: Cedric Xing <cedric.xing@intel.com>
To: linux-kernel@vger.kernel.org, linux-sgx@vger.kernel.org,
jarkko.sakkinen@linux.intel.com
Cc: cedric.xing@intel.com, akpm@linux-foundation.org,
dave.hansen@intel.com, sean.j.christopherson@intel.com,
serge.ayoun@intel.com, shay.katz-zamir@intel.com,
haitao.huang@intel.com, kai.svahn@intel.com, kai.huang@intel.com
Subject: [RFC PATCH v4 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack
Date: Fri, 12 Jul 2019 23:51:26 -0700 [thread overview]
Message-ID: <e3987c04e44c3d366d762c22d6e692e043d0580b.1563000446.git.cedric.xing@intel.com> (raw)
In-Reply-To: <cover.1563000446.git.cedric.xing@intel.com>
In-Reply-To: <cover.1563000446.git.cedric.xing@intel.com>
The previous __vdso_sgx_enter_enclave() requires enclaves to preserve %rsp,
which prohibits enclaves from allocating and passing parameters for
untrusted function calls (aka. o-calls) on the untrusted stack.
This patch addresses the problem above by introducing a new ABI that preserves
%rbp instead of %rsp. Then __vdso_sgx_enter_enclave() can anchor its frame
using %rbp so that enclaves are allowed to allocate space on the untrusted
stack by decrementing %rsp. Please note that the stack space allocated in such
way will be part of __vdso_sgx_enter_enclave()'s frame so will be freed after
__vdso_sgx_enter_enclave() returns. Therefore, __vdso_sgx_enter_enclave() has
been revised to take a callback function as an optional parameter, which if
supplied, will be invoked upon enclave exits (both AEX (Asynchronous Enclave
eXit) and normal exits), with the value of %rsp left off by the enclave as a
parameter to the callback.
Here's the summary of API/ABI changes in this patch. More details could be
found in arch/x86/entry/vdso/vsgx_enter_enclave.S.
* 'struct sgx_enclave_exception' is renamed to 'struct sgx_enclave_exinfo'
because it is filled upon both AEX (i.e. exceptions) and normal enclave
exits.
* __vdso_sgx_enter_enclave() anchors its frame using %rbp (instead of %rsp in
the previous implementation).
* __vdso_sgx_enter_enclave() takes one more parameter - a callback function
to be invoked upon enclave exits. This callback is optional, and if not
supplied, will cause __vdso_sgx_enter_enclave() to return upon enclave
exits (same behavior as previous implementation).
* The callback function is given as a parameter the value of %rsp at enclave
exit to address data "pushed" by the enclave. A positive value returned by
the callback will be treated as an ENCLU leaf for re-entering the enclave,
while a zero or negative value will be passed through as the return
value of __vdso_sgx_enter_enclave() to its caller. It's also safe to
leave callback by longjmp() or by throwing a C++ exception.
Signed-off-by: Cedric Xing <cedric.xing@intel.com>
---
arch/x86/entry/vdso/vsgx_enter_enclave.S | 310 +++++++++++++++++------
arch/x86/include/uapi/asm/sgx.h | 14 +-
2 files changed, 242 insertions(+), 82 deletions(-)
diff --git a/arch/x86/entry/vdso/vsgx_enter_enclave.S b/arch/x86/entry/vdso/vsgx_enter_enclave.S
index fe0bf6671d6d..a96542ba6945 100644
--- a/arch/x86/entry/vdso/vsgx_enter_enclave.S
+++ b/arch/x86/entry/vdso/vsgx_enter_enclave.S
@@ -6,96 +6,256 @@
#include "extable.h"
-#define EX_LEAF 0*8
-#define EX_TRAPNR 0*8+4
-#define EX_ERROR_CODE 0*8+6
-#define EX_ADDRESS 1*8
+#define EX_LEAF 0*8
+#define EX_TRAPNR 0*8+4
+#define EX_ERROR_CODE 0*8+6
+#define EX_ADDRESS 1*8
.code64
.section .text, "ax"
#ifdef SGX_KERNEL_DOC
/**
- * __vdso_sgx_enter_enclave() - Enter an SGX enclave
+ * typedef sgx_ex_callback - Callback function for __vdso_sgx_enter_enclave()
*
- * @leaf: **IN \%eax** - ENCLU leaf, must be EENTER or ERESUME
- * @tcs: **IN \%rbx** - TCS, must be non-NULL
- * @ex_info: **IN \%rcx** - Optional 'struct sgx_enclave_exception' pointer
+ * @rdi: value of %%rdi register at enclave exit
+ * @rsi: value of %%rsi register at enclave exit
+ * @rdx: value of %%rdx register at enclave exit
+ * @exinfo: pointer to a sgx_enclave_exinfo structure, which was passed to
+ * __vdso_sgx_enter_enclave() as input
+ * @r8: value of %%r8 register at enclave exit
+ * @r9: value of %%r9 register at enclave exit
+ * @tcs: TCS used by __vdso_sgx_enter_enclave() to enter the enclave,
+ * could be used to re-enter the
+ * enclave
+ * @ursp: value of %%rsp register at enclave exit
+ *
+ * This is the callback function to be invoked upon enclave exits, including
+ * normal exits (as result of EEXIT), and asynchronous exits (AEX) due to
+ * exceptions occurred at EENTER or within the enclave.
+ *
+ * This callback is expected to follow x86_64 ABI.
*
* Return:
- * **OUT \%eax** -
- * %0 on a clean entry/exit to/from the enclave, %-EINVAL if ENCLU leaf is
- * not allowed or if TCS is NULL, %-EFAULT if ENCLU or the enclave faults
- *
- * **Important!** __vdso_sgx_enter_enclave() is **NOT** compliant with the
- * x86-64 ABI, i.e. cannot be called from standard C code. As noted above,
- * input parameters must be passed via ``%eax``, ``%rbx`` and ``%rcx``, with
- * the return value passed via ``%eax``. All registers except ``%rsp`` must
- * be treated as volatile from the caller's perspective, including but not
- * limited to GPRs, EFLAGS.DF, MXCSR, FCW, etc... Conversely, the enclave
- * being run **must** preserve the untrusted ``%rsp`` and stack.
+ *
+ * EENTER(2) - causes __vdso_sgx_enter_enclave() to issue ENCLU[EENTER] on the
+ * same TCS. All GPRs left off by this callback function will be passed through
+ * back to the enclave, except %%rax, %%rbx and %%rcx, which are clobbered by
+ * ENCLU[EENTER] instruction.
+ *
+ * ERESUME(3) - causes __vdso_sgx_enter_enclave() to issue ENCLU[ERESUME] on
+ * the same TCS.
+ *
+ * 0 (zero) or negative returned values will be returned back to
+ * __vdso_sgx_enter_enclave()'s caller as is.
+ *
+ * All other values will cause -EINVAL to be returned to
+ * __vdso_sgx_enter_enclave()'s caller.
+ *
+ * Note: All general purpose registers (GPRs) left off by the enclave are
+ * passed through to this function, except %%rax, %%rbx and %%rcx, which are
+ * used internally by __vdso_sgx_enter_enclave(). Some of those registers are
+ * accessible as function parameters (i.e. @rdi, @rsi, @rdx, @r8, @r9 and
+ * @ursp), while others can be accessed only from assembly code.
*/
-__vdso_sgx_enter_enclave(u32 leaf, void *tcs,
- struct sgx_enclave_exception *ex_info)
-{
- if (leaf != SGX_EENTER && leaf != SGX_ERESUME)
- return -EINVAL;
+typedef int sgx_ex_callback(long rdi, long rsi, long rdx,
+ struct sgx_enclave_exinfo *exinfo,
+ long r8, long r9, void *tcs, long ursp);
- if (!tcs)
- return -EINVAL;
+/**
+ * __vdso_sgx_enter_enclave() - Enter an SGX enclave and capture exceptions
+ *
+ * @leaf:
+ * passed in %%eax, must be either EENTER(2) or ERESUME(3)
+ * @tcs:
+ * passed on stack at 8(%%rsp), is the linear address of TCS
+ * @exinfo:
+ * passed on stack at 0x10(%%rsp), optional, and if non-NULL, shall point
+ * to an sgx_enclave_exinfo structure to receive information about the
+ * enclave exit
+ * @callback:
+ * passed on stack at 0x18(%%rsp), optional, and if non-NULL, points to a
+ * callback function to be invoked at enclave exits
+ *
+ * __vdso_sgx_enter_enclave() issues either ENCLU[EENTER] or ENCLU[ERESUME] on
+ * @tcs depending on @leaf.
+ *
+ * IMPORTANT! This API is not compliant with x86-64 ABI but adopts a
+ * proprietary calling convention. Please see NOTES section below for details.
+ *
+ * On an enclave exit, @exinfo->leaf will be set to the ENCLU leaf at exit, if
+ * @exinfo is not NULL. That is, @exinfo->leaf may be one of the following:
+ *
+ * * EEXIT: Normal exit due to ENCLU[EEXIT] within the enclave. All other
+ * members will remain intact.
+ *
+ * * ERESUME: Asynchronous exit due to exceptions within the enclave.
+ * @exinfo->trapnr, @exinfo->error_code and @exinfo->address are
+ * set to the trap number, error code and fault address,
+ * respectively.
+ *
+ * * EENTER: Exception occurred when trying to enter the enclave.
+ * @exinfo->trapnr, @exinfo->error_code and @exinfo->address are
+ * set to the trap number, error code and fault address,
+ * accordingly.
+ *
+ * If @callback is NULL, 0 (zero) is returned if the enclave has been entered
+ * and exited normally, or -EFAULT if any exception has occurred, or -EINVAL if
+ * @leaf on input is neither EENTER or ERESUME.
+ *
+ * If @callback is not NULL, it is invoked at enclave exit, and then actions
+ * will be taken depending on its return value - i.e. positive value will be
+ * treated as ENCLU leaf to re-enter the enclave, while 0 (zero) or negative
+ * values will be returned back to the caller as is. Unrecognized leaf values
+ * will cause -EINVAL to be returned.
+ *
+ * Return:
+ *
+ * 0 (zero) is returned on a successful entry and normal exit from the enclave.
+ *
+ * -EINVAL is returned if @leaf is neither EENTER nor ERESUME, or if @callback
+ * is not NULL and returns a positive value that is neither EENTER nor ERESUME
+ * after the enclave exits.
+ *
+ * -EFAULT is returned if an exception has occurred at EENTER or during
+ * execution of the enclave and @callback is NULL, or if @callback is not NULL
+ * and it returns -EFAULT after the enclave exits.
+ *
+ * Other values may be returned as the return value from @callback if it is not
+ * NULL.
+ *
+ * Note: __vdso_sgx_enter_enclave() adopts a proprietary calling convention,
+ * described below:
+ *
+ * * As noted above, input parameters are passed via %%eax and the stack.
+ *
+ * * %%rbx and %%rcx must be treated as volatile as they are modified as part
+ * of enclaves transitions and are used as scratch regs.
+ *
+ * * %%rdx, %%rdi, %%rsi and %%r8-%%r15 are passed as is and may be freely
+ * modified by the enclave. Values left in those registers will not be
+ * altered either, so will be visiable to the callback or the caller (if no
+ * callback is specified).
+ *
+ * * %%rsp could be decremented by the enclave to allocate temporary space on
+ * the untrusted stack. Temporary space allocated this way is retained in
+ * the context of @callback, and will be freed (i.e. %%rsp will be
+ * restored) before __vdso_sgx_enter_enclave() returns.
+ */
+int __vdso_sgx_enter_enclave(int leaf, void *tcs,
+ struct sgx_enclave_exinfo *exinfo,
+ sgx_ex_callback *callback);
+{
+ while (leaf == EENTER || leaf == ERESUME) {
+ int rc;
+ try {
+ ENCLU[leaf];
+ rc = 0;
+ if (exinfo)
+ exinfo->leaf = EEXIT;
+ } catch (exception) {
+ rc = -EFAULT;
+ if (exinfo)
+ *exinfo = exception;
+ }
- try {
- ENCLU[leaf];
- } catch (exception) {
- if (e)
- *e = exception;
- return -EFAULT;
- }
+ leaf = !callback ? rc: (*callback)(rdi, rsi, rdx, exinfo,
+ r8, r9, tcs, ursp);
+ }
- return 0;
+ return leaf > 0 ? -EINVAL : leaf;
}
#endif
+
ENTRY(__vdso_sgx_enter_enclave)
- /* EENTER <= leaf <= ERESUME */
- cmp $0x2, %eax
- jb bad_input
-
- cmp $0x3, %eax
- ja bad_input
-
- /* TCS must be non-NULL */
- test %rbx, %rbx
- je bad_input
-
- /* Save @exception_info */
- push %rcx
-
- /* Load AEP for ENCLU */
- lea 1f(%rip), %rcx
-1: enclu
-
- add $0x8, %rsp
- xor %eax, %eax
- ret
-
-bad_input:
- mov $(-EINVAL), %rax
- ret
-
-.pushsection .fixup, "ax"
- /* Re-load @exception_info and fill it (if it's non-NULL) */
-2: pop %rcx
- test %rcx, %rcx
- je 3f
-
- mov %eax, EX_LEAF(%rcx)
- mov %di, EX_TRAPNR(%rcx)
- mov %si, EX_ERROR_CODE(%rcx)
- mov %rdx, EX_ADDRESS(%rcx)
-3: mov $(-EFAULT), %rax
- ret
-.popsection
-
-_ASM_VDSO_EXTABLE_HANDLE(1b, 2b)
+ /* Prolog */
+ .cfi_startproc
+ push %rbp
+ .cfi_adjust_cfa_offset 8
+ .cfi_rel_offset %rbp, 0
+ mov %rsp, %rbp
+ .cfi_def_cfa_register %rbp
+
+1: /* EENTER <= leaf <= ERESUME */
+ cmp $0x2, %eax
+ jb 6f
+ cmp $0x3, %eax
+ ja 6f
+
+ /* Load TCS and AEP */
+ mov 0x10(%rbp), %rbx
+ lea 2f(%rip), %rcx
+
+ /* Single ENCLU serving as both EENTER and AEP (ERESUME) */
+2: enclu
+
+ /* EEXIT path */
+ xor %ebx, %ebx
+3: mov 0x18(%rbp), %rcx
+ jrcxz 4f
+ mov %eax, EX_LEAF(%rcx)
+ jnc 4f
+ mov %di, EX_TRAPNR(%rcx)
+ mov %si, EX_ERROR_CODE(%rcx)
+ mov %rdx, EX_ADDRESS(%rcx)
+
+4: /* Call *callback if supplied */
+ mov 0x20(%rbp), %rax
+ test %rax, %rax
+ /*
+ * At this point, %ebx holds the effective return value, which shall be
+ * returned if no callback is specified
+ */
+ cmovz %rbx, %rax
+ jz 7f
+ /*
+ * Align stack per x86_64 ABI. The original %rsp is saved in %rbx to be
+ * restored after *callback returns.
+ */
+ mov %rsp, %rbx
+ and $-0x10, %rsp
+ /* Clear RFLAGS.DF per x86_64 ABI */
+ cld
+ /* Parameters for *callback */
+ push %rbx
+ push 0x10(%rbp)
+ /* Call *%rax via retpoline */
+ call 40f
+ /*
+ * Restore %rsp to its original value left off by the enclave from last
+ * exit
+ */
+ mov %rbx, %rsp
+ /*
+ * Positive return value from *callback will be interpreted as an ENCLU
+ * leaf, while a non-positive value will be interpreted as the return
+ * value to be passed back to the caller.
+ */
+ jmp 1b
+40: /* retpoline */
+ call 42f
+41: pause
+ lfence
+ jmp 41b
+42: mov %rax, (%rsp)
+ ret
+
+5: /* Exception path */
+ mov $-EFAULT, %ebx
+ stc
+ jmp 3b
+
+6: /* Unsupported ENCLU leaf */
+ cmp $0, %eax
+ jle 7f
+ mov $-EINVAL, %eax
+
+7: /* Epilog */
+ leave
+ .cfi_def_cfa %rsp, 8
+ ret
+ .cfi_endproc
+
+_ASM_VDSO_EXTABLE_HANDLE(2b, 5b)
ENDPROC(__vdso_sgx_enter_enclave)
diff --git a/arch/x86/include/uapi/asm/sgx.h b/arch/x86/include/uapi/asm/sgx.h
index 9ed690a38c70..50d2b5143e5e 100644
--- a/arch/x86/include/uapi/asm/sgx.h
+++ b/arch/x86/include/uapi/asm/sgx.h
@@ -24,7 +24,7 @@
/**
* struct sgx_enclave_create - parameter structure for the
- * %SGX_IOC_ENCLAVE_CREATE ioctl
+ * %SGX_IOC_ENCLAVE_CREATE ioctl
* @src: address for the SECS page data
*/
struct sgx_enclave_create {
@@ -33,7 +33,7 @@ struct sgx_enclave_create {
/**
* struct sgx_enclave_add_page - parameter structure for the
- * %SGX_IOC_ENCLAVE_ADD_PAGE ioctl
+ * %SGX_IOC_ENCLAVE_ADD_PAGE ioctl
* @addr: address within the ELRANGE
* @src: address for the page data
* @secinfo: address for the SECINFO data
@@ -49,7 +49,7 @@ struct sgx_enclave_add_page {
/**
* struct sgx_enclave_init - parameter structure for the
- * %SGX_IOC_ENCLAVE_INIT ioctl
+ * %SGX_IOC_ENCLAVE_INIT ioctl
* @sigstruct: address for the SIGSTRUCT data
*/
struct sgx_enclave_init {
@@ -66,16 +66,16 @@ struct sgx_enclave_set_attribute {
};
/**
- * struct sgx_enclave_exception - structure to report exceptions encountered in
- * __vdso_sgx_enter_enclave()
+ * struct sgx_enclave_exinfo - structure to report exceptions encountered in
+ * __vdso_sgx_enter_enclave()
*
- * @leaf: ENCLU leaf from \%eax at time of exception
+ * @leaf: ENCLU leaf from \%eax at time of exception/exit
* @trapnr: exception trap number, a.k.a. fault vector
* @error_code: exception error code
* @address: exception address, e.g. CR2 on a #PF
* @reserved: reserved for future use
*/
-struct sgx_enclave_exception {
+struct sgx_enclave_exinfo {
__u32 leaf;
__u16 trapnr;
__u16 error_code;
--
2.17.1
next prev parent reply other threads:[~2019-07-13 6:51 UTC|newest]
Thread overview: 318+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-17 10:39 [PATCH v20 00/28] Intel SGX1 support Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 01/28] x86/cpufeatures: Add Intel-defined SGX feature bit Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 02/28] x86/cpufeatures: Add SGX sub-features (as Linux-defined bits) Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 03/28] x86/msr: Add IA32_FEATURE_CONTROL.SGX_ENABLE definition Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 04/28] x86/cpufeatures: Add Intel-defined SGX_LC feature bit Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 05/28] x86/msr: Add SGX Launch Control MSR definitions Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 06/28] x86/mm: x86/sgx: Add new 'PF_SGX' page fault error code bit Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 07/28] x86/mm: x86/sgx: Signal SIGSEGV for userspace #PFs w/ PF_SGX Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 08/28] x86/cpu/intel: Detect SGX support and update caps appropriately Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 09/28] x86/sgx: Add ENCLS architectural error codes Jarkko Sakkinen
2019-04-22 21:35 ` Sean Christopherson
2019-04-17 10:39 ` [PATCH v20 10/28] x86/sgx: Add SGX1 and SGX2 architectural data structures Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 11/28] x86/sgx: Add wrappers for ENCLS leaf functions Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 12/28] x86/sgx: Enumerate and track EPC sections Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 13/28] x86/sgx: Add functions to allocate and free EPC pages Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 14/28] x86/sgx: Add sgx_einit() for initializing enclaves Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 15/28] x86/sgx: Add the Linux SGX Enclave Driver Jarkko Sakkinen
2019-04-22 21:58 ` Sean Christopherson
2019-04-23 23:29 ` Jethro Beekman
2019-04-24 0:26 ` Sean Christopherson
2019-04-24 1:04 ` Jethro Beekman
2019-04-29 19:08 ` Sean Christopherson
2019-06-04 20:12 ` Sean Christopherson
2019-06-05 14:29 ` Jarkko Sakkinen
2019-06-05 14:52 ` Sean Christopherson
2019-06-05 21:25 ` Dr. Greg
2019-06-05 22:20 ` Sean Christopherson
2019-06-06 15:32 ` Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 16/28] x86/sgx: Add provisioning Jarkko Sakkinen
2019-04-19 3:06 ` Huang, Kai
2019-04-23 14:33 ` Jarkko Sakkinen
2019-04-24 1:34 ` Jethro Beekman
2019-05-02 8:27 ` Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 17/28] x86/sgx: Add swapping code to the core and SGX driver Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 18/28] x86/sgx: ptrace() support for the " Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 19/28] x86/vdso: Add support for exception fixup in vDSO functions Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 20/28] x86/fault: Add helper function to sanitize error code Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 21/28] x86/fault: Attempt to fixup unhandled #PF in vDSO before signaling Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 22/28] x86/traps: Attempt to fixup exceptions " Jarkko Sakkinen
2019-06-25 15:43 ` Jarkko Sakkinen
2019-06-27 20:32 ` Xing, Cedric
2019-07-11 15:54 ` Sean Christopherson
2019-07-11 22:12 ` Xing, Cedric
2019-07-11 15:56 ` Sean Christopherson
2019-07-11 17:52 ` Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 23/28] x86/vdso: Add __vdso_sgx_enter_enclave() to wrap SGX enclave transitions Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 24/28] selftests/x86: Add a selftest for SGX Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 25/28] x86/sgx: Update MAINTAINERS Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 26/28] docs: x86/sgx: Add Architecture documentation Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 27/28] docs: x86/sgx: Document kernel internals Jarkko Sakkinen
2019-04-17 10:39 ` [PATCH v20 28/28] docs: x86/sgx: Document the enclave API Jarkko Sakkinen
2019-04-18 17:10 ` [PATCH v20 00/28] Intel SGX1 support Dr. Greg
2019-04-18 17:24 ` Dave Hansen
2019-04-19 16:24 ` Dr. Greg
2019-04-19 16:39 ` Dave Hansen
2019-04-18 18:01 ` Dave Hansen
2019-04-19 14:17 ` Dr. Greg
2019-04-19 14:25 ` Dave Hansen
2019-04-19 15:27 ` Andy Lutomirski
2019-04-19 19:38 ` Jethro Beekman
2019-04-19 20:39 ` Thomas Gleixner
2019-04-19 20:46 ` Jethro Beekman
2019-04-19 20:50 ` Thomas Gleixner
2019-04-19 20:54 ` Jethro Beekman
2019-04-19 21:15 ` Andy Lutomirski
2019-04-19 21:19 ` Jethro Beekman
2019-04-19 21:31 ` Andy Lutomirski
2019-04-19 21:35 ` Jethro Beekman
2019-04-19 21:38 ` Thomas Gleixner
2019-04-19 21:56 ` Jethro Beekman
2019-04-20 5:42 ` Thomas Gleixner
2019-04-20 16:02 ` Dr. Greg
2019-04-22 15:01 ` Sean Christopherson
2019-04-22 16:24 ` Dr. Greg
2019-04-22 16:48 ` Sean Christopherson
2019-04-22 16:55 ` Linus Torvalds
2019-04-22 17:17 ` Sean Christopherson
2019-04-23 9:11 ` Dr. Greg
2019-04-22 16:26 ` Andy Lutomirski
2019-04-23 21:15 ` Jethro Beekman
2019-05-10 17:23 ` Xing, Cedric
2019-05-10 17:37 ` Jethro Beekman
2019-05-10 17:54 ` Dave Hansen
2019-05-10 18:04 ` Jethro Beekman
2019-05-10 18:56 ` Xing, Cedric
2019-05-10 19:04 ` Jethro Beekman
2019-05-10 19:22 ` Andy Lutomirski
2019-05-11 1:06 ` Xing, Cedric
2019-05-14 15:08 ` Andy Lutomirski
2019-05-15 8:31 ` Jarkko Sakkinen
[not found] ` <20190513102926.GD8743@linux.intel.com>
2019-05-14 10:43 ` Jarkko Sakkinen
2019-05-14 15:13 ` Andy Lutomirski
2019-05-14 20:45 ` Sean Christopherson
2019-05-14 21:27 ` Andy Lutomirski
2019-05-14 22:28 ` Xing, Cedric
2019-05-15 1:30 ` Sean Christopherson
2019-05-15 18:27 ` SGX vs LSM (Re: [PATCH v20 00/28] Intel SGX1 support) Andy Lutomirski
2019-05-15 19:58 ` James Morris
2019-05-15 20:35 ` Andy Lutomirski
2019-05-15 22:46 ` James Morris
2019-05-15 23:13 ` Andy Lutomirski
2019-05-16 3:03 ` Xing, Cedric
2019-05-16 4:40 ` Andy Lutomirski
2019-05-16 22:23 ` Xing, Cedric
2019-05-17 0:35 ` Andy Lutomirski
2019-05-17 1:06 ` Xing, Cedric
2019-05-17 1:21 ` Andy Lutomirski
2019-05-17 16:05 ` Sean Christopherson
2019-05-17 13:53 ` Stephen Smalley
2019-05-17 15:09 ` Sean Christopherson
2019-05-17 16:20 ` Stephen Smalley
2019-05-17 16:24 ` Andy Lutomirski
2019-05-17 16:37 ` Stephen Smalley
2019-05-17 17:12 ` Andy Lutomirski
2019-05-17 18:05 ` Stephen Smalley
2019-05-17 19:20 ` Stephen Smalley
2019-05-17 19:28 ` Sean Christopherson
2019-05-17 20:09 ` Stephen Smalley
2019-05-17 20:14 ` Andy Lutomirski
2019-05-17 20:34 ` Stephen Smalley
2019-05-17 21:36 ` Sean Christopherson
2019-05-17 17:29 ` Sean Christopherson
2019-05-17 17:42 ` Stephen Smalley
2019-05-17 17:50 ` Sean Christopherson
2019-05-17 18:16 ` Stephen Smalley
2019-05-17 17:43 ` Andy Lutomirski
2019-05-17 17:55 ` Sean Christopherson
2019-05-17 18:04 ` Linus Torvalds
2019-05-17 18:21 ` Sean Christopherson
2019-05-17 18:33 ` Linus Torvalds
2019-05-17 18:52 ` Sean Christopherson
2019-05-17 18:53 ` Andy Lutomirski
2019-05-16 7:24 ` James Morris
2019-05-16 21:00 ` Andy Lutomirski
2019-05-20 9:38 ` Dr. Greg
2019-05-15 21:38 ` Sean Christopherson
2019-05-16 1:19 ` Haitao Huang
2019-05-16 5:16 ` Jarkko Sakkinen
2019-05-16 21:02 ` Andy Lutomirski
2019-05-16 22:45 ` Sean Christopherson
2019-05-16 23:29 ` Xing, Cedric
2019-05-20 11:29 ` Jarkko Sakkinen
2019-05-20 11:33 ` Jarkko Sakkinen
2019-05-17 0:03 ` Sean Christopherson
2019-05-17 0:26 ` Andy Lutomirski
2019-05-17 15:41 ` Sean Christopherson
2019-05-20 11:42 ` Jarkko Sakkinen
2019-05-20 11:41 ` Jarkko Sakkinen
2019-05-21 15:19 ` Jarkko Sakkinen
2019-05-21 15:24 ` Jethro Beekman
2019-05-22 13:10 ` Jarkko Sakkinen
2019-05-21 15:51 ` Sean Christopherson
2019-05-22 13:20 ` Jarkko Sakkinen
2019-05-22 13:22 ` Jarkko Sakkinen
2019-05-22 13:56 ` Stephen Smalley
2019-05-22 15:38 ` Sean Christopherson
2019-05-22 22:42 ` Andy Lutomirski
2019-05-23 2:35 ` Sean Christopherson
2019-05-23 10:26 ` Jarkko Sakkinen
2019-05-23 14:17 ` Sean Christopherson
2019-05-23 15:38 ` Andy Lutomirski
2019-05-23 23:40 ` Sean Christopherson
2019-05-24 1:17 ` Andy Lutomirski
2019-05-24 7:24 ` Xing, Cedric
2019-05-24 15:41 ` Stephen Smalley
2019-05-24 16:57 ` Xing, Cedric
2019-05-24 17:42 ` Sean Christopherson
2019-05-24 17:54 ` Andy Lutomirski
2019-05-24 17:56 ` Sean Christopherson
2019-05-24 17:54 ` Sean Christopherson
2019-05-24 18:34 ` Xing, Cedric
2019-05-24 19:13 ` Sean Christopherson
2019-05-24 19:30 ` Andy Lutomirski
2019-05-24 20:42 ` Xing, Cedric
2019-05-24 21:11 ` Sean Christopherson
2019-05-24 19:37 ` Andy Lutomirski
2019-05-24 20:03 ` Sean Christopherson
2019-05-24 20:58 ` Xing, Cedric
2019-05-24 21:27 ` Andy Lutomirski
2019-05-24 22:41 ` Sean Christopherson
2019-05-24 23:42 ` Andy Lutomirski
2019-05-25 22:40 ` Xing, Cedric
2019-05-26 0:57 ` Andy Lutomirski
2019-05-26 6:09 ` Xing, Cedric
2019-05-28 20:24 ` Sean Christopherson
2019-05-28 20:48 ` Andy Lutomirski
2019-05-28 21:41 ` Sean Christopherson
2019-05-30 5:38 ` Xing, Cedric
2019-05-30 17:21 ` Sean Christopherson
2019-05-29 14:08 ` Stephen Smalley
2019-05-30 6:12 ` Xing, Cedric
2019-05-30 14:22 ` Stephen Smalley
2019-05-30 14:31 ` Andy Lutomirski
2019-05-30 15:04 ` Stephen Smalley
2019-05-30 16:14 ` Andy Lutomirski
2019-05-30 18:01 ` Sean Christopherson
2019-05-30 19:20 ` Andy Lutomirski
2019-05-30 21:16 ` Sean Christopherson
2019-05-30 21:23 ` Andy Lutomirski
2019-05-30 21:36 ` Sean Christopherson
2019-06-03 9:12 ` Dr. Greg
2019-06-03 21:08 ` Jarkko Sakkinen
2019-05-30 21:48 ` Xing, Cedric
2019-05-30 22:24 ` Sean Christopherson
2019-06-03 21:05 ` Jarkko Sakkinen
2019-06-03 20:54 ` Jarkko Sakkinen
2019-06-03 21:23 ` Sean Christopherson
2019-06-04 11:39 ` Jarkko Sakkinen
2019-06-03 21:37 ` Andy Lutomirski
2019-06-03 20:47 ` Jarkko Sakkinen
2019-06-03 20:43 ` Jarkko Sakkinen
2019-05-25 17:31 ` Dr. Greg
2019-05-24 16:43 ` Andy Lutomirski
2019-05-24 17:07 ` Sean Christopherson
2019-05-24 17:51 ` Andy Lutomirski
2019-05-24 14:44 ` Stephen Smalley
2019-05-27 13:48 ` Jarkko Sakkinen
2019-05-23 19:58 ` Sean Christopherson
2019-05-27 13:34 ` Jarkko Sakkinen
2019-05-27 13:38 ` Jarkko Sakkinen
2019-05-23 8:10 ` Jarkko Sakkinen
2019-05-23 8:23 ` Jarkko Sakkinen
2019-05-20 11:36 ` Jarkko Sakkinen
2019-05-15 10:35 ` [PATCH v20 00/28] Intel SGX1 support Jarkko Sakkinen
2019-05-15 11:00 ` Jarkko Sakkinen
2019-05-15 14:27 ` Andy Lutomirski
2019-05-16 5:07 ` Jarkko Sakkinen
2019-05-16 6:51 ` Jarkko Sakkinen
2019-05-16 7:02 ` Jarkko Sakkinen
2019-05-15 13:21 ` Sean Christopherson
2019-05-16 5:01 ` Jarkko Sakkinen
2019-05-15 8:49 ` Jarkko Sakkinen
2019-05-15 9:58 ` Jarkko Sakkinen
2019-05-14 14:33 ` Haitao Huang
2019-05-14 15:17 ` Andy Lutomirski
2019-05-14 15:30 ` Haitao Huang
2019-05-14 20:45 ` Andy Lutomirski
2019-05-14 21:08 ` Haitao Huang
2019-05-14 21:58 ` Xing, Cedric
2019-05-15 5:15 ` Haitao Huang
2019-05-10 18:44 ` Xing, Cedric
2019-04-19 21:34 ` Thomas Gleixner
2019-04-19 21:05 ` Jethro Beekman
2019-04-18 18:07 ` Andy Lutomirski
2019-04-22 20:42 ` [RFC PATCH v1 0/3] An alternative __vdso_sgx_enter_enclave() to allow enclave/host parameter passing using untrusted stack Cedric Xing
2019-04-22 22:05 ` Sean Christopherson
2019-04-23 0:37 ` Cedric Xing
2019-04-24 6:26 ` [RFC PATCH v2 " Cedric Xing
2019-07-10 11:17 ` Jarkko Sakkinen
2019-07-10 18:08 ` Xing, Cedric
2019-07-10 22:46 ` Jarkko Sakkinen
2019-07-10 22:54 ` Xing, Cedric
2019-07-11 9:36 ` Jarkko Sakkinen
2019-07-11 19:49 ` Xing, Cedric
2019-07-10 23:15 ` Jarkko Sakkinen
2019-07-10 23:37 ` Xing, Cedric
2019-07-11 9:38 ` Jarkko Sakkinen
2019-07-11 15:50 ` Sean Christopherson
2019-07-11 17:59 ` Jarkko Sakkinen
2019-07-11 19:51 ` Xing, Cedric
2019-07-11 4:21 ` [RFC PATCH v3 0/3] x86/sgx: Amend vDSO API to allow enclave/host parameter passing on " Cedric Xing
2019-07-12 3:28 ` Jarkko Sakkinen
2019-07-13 6:51 ` [RFC PATCH v4 " Cedric Xing
2019-07-13 6:51 ` [RFC PATCH v4 1/3] selftests/x86/sgx: Fix Makefile for SGX selftest Cedric Xing
2019-07-13 15:10 ` Jarkko Sakkinen
2019-07-13 15:15 ` Jarkko Sakkinen
2019-07-13 17:29 ` Xing, Cedric
2019-07-14 14:53 ` Jarkko Sakkinen
2019-07-13 6:51 ` Cedric Xing [this message]
2019-07-13 15:04 ` [RFC PATCH v4 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Jarkko Sakkinen
2019-07-13 15:06 ` Jarkko Sakkinen
2019-07-13 6:51 ` [RFC PATCH v4 3/3] selftests/x86/sgx: Augment SGX selftest to test vDSO API Cedric Xing
2019-07-13 15:21 ` Jarkko Sakkinen
2019-07-13 17:20 ` Xing, Cedric
2019-07-14 14:40 ` Jarkko Sakkinen
2019-07-14 14:47 ` Jarkko Sakkinen
2019-07-17 21:57 ` Xing, Cedric
2019-07-11 4:21 ` [RFC PATCH v3 1/3] selftests/x86: Fixed Makefile for SGX selftest Cedric Xing
2019-07-11 4:21 ` [RFC PATCH v3 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Cedric Xing
2019-07-11 9:50 ` Jarkko Sakkinen
2019-07-11 9:53 ` Jarkko Sakkinen
2019-07-11 15:42 ` Sean Christopherson
2019-07-11 17:55 ` Jarkko Sakkinen
2019-07-11 17:58 ` Sean Christopherson
2019-07-12 3:16 ` Jarkko Sakkinen
2019-07-13 7:00 ` Xing, Cedric
2019-07-11 4:21 ` [RFC PATCH v3 3/3] selftests/x86: Augment SGX selftest to test new __vdso_sgx_enter_enclave() and its callback interface Cedric Xing
2019-04-24 6:26 ` [RFC PATCH v2 1/3] selftests/x86: Fixed Makefile for SGX selftest Cedric Xing
2019-07-12 3:19 ` Jarkko Sakkinen
2019-07-13 6:58 ` Xing, Cedric
2019-04-24 6:26 ` [RFC PATCH v2 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Cedric Xing
2019-04-24 19:04 ` Sean Christopherson
2019-04-25 23:31 ` Xing, Cedric
2019-04-26 21:00 ` Sean Christopherson
2019-05-02 8:28 ` Jarkko Sakkinen
2019-04-24 6:26 ` [RFC PATCH v2 3/3] selftests/x86: Augment SGX selftest to test new __vdso_sgx_enter_enclave() and its callback interface Cedric Xing
2019-07-12 3:25 ` Jarkko Sakkinen
2019-07-13 7:03 ` Xing, Cedric
2019-04-22 20:42 ` [RFC PATCH v1 1/3] selftests/x86: Fixed Makefile for SGX selftest Cedric Xing
2019-04-23 0:37 ` Cedric Xing
2019-04-22 20:42 ` [RFC PATCH v1 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Cedric Xing
2019-04-22 22:26 ` Sean Christopherson
2019-04-23 0:37 ` Cedric Xing
2019-04-23 1:25 ` Andy Lutomirski
2019-04-24 17:56 ` Xing, Cedric
2019-04-23 19:26 ` Sean Christopherson
2019-04-23 19:44 ` Andy Lutomirski
2019-04-22 20:42 ` [RFC PATCH v1 3/3] selftests/x86: Augment SGX selftest to test new __vdso_sgx_enter_enclave() and its callback interface Cedric Xing
2019-04-23 0:37 ` Cedric Xing
2019-04-23 1:29 ` Andy Lutomirski
2019-04-23 1:48 ` Sean Christopherson
2019-04-23 18:59 ` Sean Christopherson
2019-04-23 19:07 ` Andy Lutomirski
2019-04-23 20:11 ` Sean Christopherson
2019-04-23 11:56 ` [PATCH v20 00/28] Intel SGX1 support Jarkko Sakkinen
2019-04-23 16:52 ` Andy Lutomirski
2019-04-24 12:17 ` Jarkko Sakkinen
2019-05-08 13:45 ` Jarkko Sakkinen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e3987c04e44c3d366d762c22d6e692e043d0580b.1563000446.git.cedric.xing@intel.com \
--to=cedric.xing@intel.com \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=haitao.huang@intel.com \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=kai.huang@intel.com \
--cc=kai.svahn@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sgx@vger.kernel.org \
--cc=sean.j.christopherson@intel.com \
--cc=serge.ayoun@intel.com \
--cc=shay.katz-zamir@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).