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

From: Sean Christopherson
Date: Mon Apr 22 2019 - 21:50:02 EST


On Mon, Apr 22, 2019 at 06:29:06PM -0700, Andy Lutomirski wrote:
> 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?

My money would be on the code being broken as opposed to you remembering
wrong. I'll take a look at it tomorrow.