Message ID | 20230819094332.8535-6-jo.vanbulck@cs.kuleuven.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | selftests/sgx: Fix compilation errors | expand |
On Sat Aug 19, 2023 at 12:43 PM EEST, Jo Van Bulck wrote: > Add the "memory" clobber to the EMODPE and EACCEPT asm blocks to tell the > compiler the assembly code accesses to the secinfo struct. This ensures > the compiler treats the asm block as a memory barrier and the write to > secinfo will be visible to ENCLU. > > Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be> > Reviewed-by: Kai Huang <kai.huang@intel.com> > --- > tools/testing/selftests/sgx/test_encl.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c > index 7633fb7cb..b09550cb3 100644 > --- a/tools/testing/selftests/sgx/test_encl.c > +++ b/tools/testing/selftests/sgx/test_encl.c > @@ -24,10 +24,11 @@ static void do_encl_emodpe(void *_op) > secinfo.flags = op->flags; > > asm volatile(".byte 0x0f, 0x01, 0xd7" > - : > + : /* no outputs */ > : "a" (EMODPE), > "b" (&secinfo), > - "c" (op->epc_addr)); > + "c" (op->epc_addr) > + : "memory" /* read from secinfo pointer */); > } > > static void do_encl_eaccept(void *_op) > @@ -42,7 +43,8 @@ static void do_encl_eaccept(void *_op) > : "=a" (rax) > : "a" (EACCEPT), > "b" (&secinfo), > - "c" (op->epc_addr)); > + "c" (op->epc_addr) > + : "memory" /* read from secinfo pointer */); > > op->ret = rax; > } > -- > 2.25.1 Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> BR, Jarkko
diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c index 7633fb7cb..b09550cb3 100644 --- a/tools/testing/selftests/sgx/test_encl.c +++ b/tools/testing/selftests/sgx/test_encl.c @@ -24,10 +24,11 @@ static void do_encl_emodpe(void *_op) secinfo.flags = op->flags; asm volatile(".byte 0x0f, 0x01, 0xd7" - : + : /* no outputs */ : "a" (EMODPE), "b" (&secinfo), - "c" (op->epc_addr)); + "c" (op->epc_addr) + : "memory" /* read from secinfo pointer */); } static void do_encl_eaccept(void *_op) @@ -42,7 +43,8 @@ static void do_encl_eaccept(void *_op) : "=a" (rax) : "a" (EACCEPT), "b" (&secinfo), - "c" (op->epc_addr)); + "c" (op->epc_addr) + : "memory" /* read from secinfo pointer */); op->ret = rax; }