On Tue, 2023-08-08 at 12:31 -0700, 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@xxxxxxxxxxxxxx> > --- > 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 c71dfbadd2d9..5b758eaf808c 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; > } Reviewed-by: Kai Huang <kai.huang@xxxxxxxxx>