Messages in this thread | | | From | "Huang, Kai" <> | Subject | Re: [PATCH 3/5] selftests/sgx: Ensure correct secinfo struct alignment in test enclave. | Date | Thu, 3 Aug 2023 04:00:54 +0000 |
| |
On Mon, 2023-07-24 at 18:58 +0200, Jo Van Bulck wrote: > Declare the secinfo struct as volatile to prevent compiler optimizations > from passing an unaligned pointer to ENCLU.
We already have __aligned. Can you provide more information in what circumstances that __aligned isn't enough to guarantee the alignment?
We have a lot of kernel code which has __aligned but doesn't have volatile.
> > Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be> > --- > tools/testing/selftests/sgx/test_encl.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c > index 4e31a6c3d673..aba301abefb8 100644 > --- a/tools/testing/selftests/sgx/test_encl.c > +++ b/tools/testing/selftests/sgx/test_encl.c > @@ -18,7 +18,8 @@ enum sgx_enclu_function { > > static void do_encl_emodpe(void *_op) > { > - struct sgx_secinfo secinfo __aligned(sizeof(struct sgx_secinfo)) = {0}; > + /* declare secinfo volatile to preserve alignment */ > + volatile struct sgx_secinfo secinfo __aligned(sizeof(struct sgx_secinfo)) = {0}; > struct encl_op_emodpe *op = _op; > > secinfo.flags = op->flags; > @@ -32,7 +33,8 @@ static void do_encl_emodpe(void *_op) > > static void do_encl_eaccept(void *_op) > { > - struct sgx_secinfo secinfo __aligned(sizeof(struct sgx_secinfo)) = {0}; > + /* declare secinfo volatile to preserve alignment */ > + volatile struct sgx_secinfo secinfo __aligned(sizeof(struct sgx_secinfo)) = {0}; > struct encl_op_eaccept *op = _op; > int rax; >
| |