summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJo Van Bulck <jo.vanbulck@cs.kuleuven.be>2023-10-05 17:38:44 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-01-25 15:27:46 -0800
commitbf92b8210198f22940a5a9fc1ff0103658b79dbb (patch)
tree7f2a18c81c1c1e29ceb539dd56f74fdfa247b224 /tools
parent2cfae256a13095ed3fe78d7ec4e91ce5cf9d5536 (diff)
downloadlinux-bf92b8210198f22940a5a9fc1ff0103658b79dbb.tar.gz
linux-bf92b8210198f22940a5a9fc1ff0103658b79dbb.tar.bz2
linux-bf92b8210198f22940a5a9fc1ff0103658b79dbb.zip
selftests/sgx: Include memory clobber for inline asm in test enclave
[ Upstream commit 853a57a43ebdb8c024160c1a0990bae85f4bcc2f ] 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. Fixes: 20404a808593 ("selftests/sgx: Add test for EPCM permission changes") Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Kai Huang <kai.huang@intel.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Link: https://lore.kernel.org/all/20231005153854.25566-4-jo.vanbulck%40cs.kuleuven.be Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/selftests/sgx/test_encl.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c
index c0d6397295e3..ae791df3e5a5 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;
}