Re: [RFC PATCH v1 3/3] selftests/x86: Augment SGX selftest to test new __vdso_sgx_enter_enclave() and its callback interface

From: Andy Lutomirski
Date: Mon Apr 22 2019 - 21:29:23 EST


On Mon, Apr 22, 2019 at 5:37 PM Cedric Xing <cedric.xing@xxxxxxxxx> wrote:
>
> Given the changes to __vdso_sgx_enter_enclave(), the selftest is augmented to
> test the newly added callback interface. This addtional test marks the whole
> enclave range as PROT_READ, and calls mprotect() upon #PFs to add necessary PTE
> permissions per PFEC (#PF Error Code) until the enclave finishes.

Nifty.

What's not tested here is running this code with EFLAGS.TF set and
making sure that it unwinds correctly. Also, Jarkko, unless I missed
something, the vDSO extable code likely has a bug. If you run the
instruction right before ENCLU with EFLAGS.TF set, then do_debug()
will eat the SIGTRAP and skip to the exception handler. Similarly, if
you put an instruction breakpoint on ENCLU, it'll get skipped. Or is
the code actually correct and am I just remembering wrong?

--Andy