From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> To: "Eric W. Biederman" <ebiederm@xmission.com> Cc: x86@kernel.org, platform-driver-x86@vger.kernel.org, dave.hansen@intel.com, sean.j.christopherson@intel.com, nhorman@redhat.com, npmccallum@redhat.com, serge.ayoun@intel.com, shay.katz-zamir@intel.com, linux-sgx@vger.kernel.org, andriy.shevchenko@linux.intel.com, Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>, "open list:X86 MM" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH v14 09/19] x86/mm: x86/sgx: Signal SEGV_SGXERR for #PFs w/ PF_SGX Date: Fri, 28 Sep 2018 15:17:50 +0300 [thread overview] Message-ID: <a70563ea8a4bfbf9d531d1bc0ca5f5577e6b83be.camel@linux.intel.com> (raw) In-Reply-To: <87zhw2ohf0.fsf@xmission.com> On Thu, 2018-09-27 at 21:43 +0200, Eric W. Biederman wrote: > Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> writes: > > > From: Sean Christopherson <sean.j.christopherson@intel.com> > > > > Signal SIGSEGV(SEGV_SGXERR) for all faults with PF_SGX set in the > > error code. The PF_SGX bit is set if and only if the #PF is detected > > by the Enclave Page Cache Map (EPCM), which is consulted only after > > an access walks the kernel's page tables, i.e.: > > > > a. the access was allowed by the kernel > > b. the kernel's tables have become less restrictive than the EPCM > > c. the kernel cannot fixup the cause of the fault > > > > Noteably, (b) implies that either the kernel has botched the EPC > > mappings or the EPCM has been invalidated due to a power event. In > > either case, userspace needs to be alerted so that it can take > > appropriate action, e.g. restart the enclave. This is reinforced > > by (c) as the kernel doesn't really have any other reasonable option, > > e.g. we could kill the task or panic, but neither is warranted. > > > > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> > > Cc: Dave Hansen <dave.hansen@linux.intel.com> > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > --- > > arch/x86/mm/fault.c | 20 +++++++++++++++++--- > > 1 file changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > > index 85d20516b2f3..3fb2b2838d6c 100644 > > --- a/arch/x86/mm/fault.c > > +++ b/arch/x86/mm/fault.c > > @@ -960,10 +960,13 @@ static noinline void > > bad_area_access_error(struct pt_regs *regs, unsigned long error_code, > > unsigned long address, struct vm_area_struct *vma) > > { > > + int si_code = SEGV_ACCERR; > > + > > if (bad_area_access_from_pkeys(error_code, vma)) > > - __bad_area(regs, error_code, address, vma, SEGV_PKUERR); > > - else > > - __bad_area(regs, error_code, address, vma, SEGV_ACCERR); > > + si_code = SEGV_PKUERR; > > + else if (unlikely(error_code & X86_PF_SGX)) > > + si_code = SEGV_SGXERR; > > + __bad_area(regs, error_code, address, vma, si_code); > > } > > This conflicts with a cleanup in this area I have sitting in linux-next. > It isn't in the x86 tree but you can find my siginfo tree at: > > git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace.git > siginfo-next > > In my tree bad area no longer takes a vma parameter. > > If you are going to make changes to the fault handling code this cycle > please let's figure out how to build it on top of my clean ups. We are now going with the proposed vdso solution for v15. Thank you for your feedback. I'll sync with you if that route would show non-feasible (still prototyping the vdso solution). > Thank you, > Eric Biederman /Jarkko
WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> To: "Eric W. Biederman" <ebiederm@xmission.com> Cc: <x86@kernel.org>, <platform-driver-x86@vger.kernel.org>, <dave.hansen@intel.com>, <sean.j.christopherson@intel.com>, <nhorman@redhat.com>, <npmccallum@redhat.com>, <serge.ayoun@intel.com>, <shay.katz-zamir@intel.com>, <linux-sgx@vger.kernel.org>, <andriy.shevchenko@linux.intel.com>, Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>, "Peter Zijlstra" <peterz@infradead.org>, Thomas Gleixner <tglx@linutronix.de>, "Ingo Molnar" <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>, "open list:X86 MM" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH v14 09/19] x86/mm: x86/sgx: Signal SEGV_SGXERR for #PFs w/ PF_SGX Date: Fri, 28 Sep 2018 15:17:50 +0300 [thread overview] Message-ID: <a70563ea8a4bfbf9d531d1bc0ca5f5577e6b83be.camel@linux.intel.com> (raw) In-Reply-To: <87zhw2ohf0.fsf@xmission.com> On Thu, 2018-09-27 at 21:43 +0200, Eric W. Biederman wrote: > Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> writes: > > > From: Sean Christopherson <sean.j.christopherson@intel.com> > > > > Signal SIGSEGV(SEGV_SGXERR) for all faults with PF_SGX set in the > > error code. The PF_SGX bit is set if and only if the #PF is detected > > by the Enclave Page Cache Map (EPCM), which is consulted only after > > an access walks the kernel's page tables, i.e.: > > > > a. the access was allowed by the kernel > > b. the kernel's tables have become less restrictive than the EPCM > > c. the kernel cannot fixup the cause of the fault > > > > Noteably, (b) implies that either the kernel has botched the EPC > > mappings or the EPCM has been invalidated due to a power event. In > > either case, userspace needs to be alerted so that it can take > > appropriate action, e.g. restart the enclave. This is reinforced > > by (c) as the kernel doesn't really have any other reasonable option, > > e.g. we could kill the task or panic, but neither is warranted. > > > > Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> > > Cc: Dave Hansen <dave.hansen@linux.intel.com> > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > --- > > arch/x86/mm/fault.c | 20 +++++++++++++++++--- > > 1 file changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c > > index 85d20516b2f3..3fb2b2838d6c 100644 > > --- a/arch/x86/mm/fault.c > > +++ b/arch/x86/mm/fault.c > > @@ -960,10 +960,13 @@ static noinline void > > bad_area_access_error(struct pt_regs *regs, unsigned long error_code, > > unsigned long address, struct vm_area_struct *vma) > > { > > + int si_code = SEGV_ACCERR; > > + > > if (bad_area_access_from_pkeys(error_code, vma)) > > - __bad_area(regs, error_code, address, vma, SEGV_PKUERR); > > - else > > - __bad_area(regs, error_code, address, vma, SEGV_ACCERR); > > + si_code = SEGV_PKUERR; > > + else if (unlikely(error_code & X86_PF_SGX)) > > + si_code = SEGV_SGXERR; > > + __bad_area(regs, error_code, address, vma, si_code); > > } > > This conflicts with a cleanup in this area I have sitting in linux-next. > It isn't in the x86 tree but you can find my siginfo tree at: > > git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace.git > siginfo-next > > In my tree bad area no longer takes a vma parameter. > > If you are going to make changes to the fault handling code this cycle > please let's figure out how to build it on top of my clean ups. We are now going with the proposed vdso solution for v15. Thank you for your feedback. I'll sync with you if that route would show non-feasible (still prototyping the vdso solution). > Thank you, > Eric Biederman /Jarkko
next prev parent reply other threads:[~2018-09-28 12:23 UTC|newest] Thread overview: 184+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-25 13:06 [PATCH v14 00/19] Intel SGX1 support Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 01/19] x86/sgx: Update MAINTAINERS Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 02/19] x86/sgx: Architectural structures Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 03/19] x86/cpufeature: Add SGX and SGX_LC CPU features Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 04/19] x86/cpufeatures: Add SGX feature bits Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 16:48 ` Borislav Petkov 2018-09-25 16:48 ` Borislav Petkov 2018-09-25 16:48 ` Borislav Petkov 2018-09-26 11:11 ` Jarkko Sakkinen 2018-09-26 11:11 ` Jarkko Sakkinen 2018-09-26 11:11 ` Jarkko Sakkinen 2018-09-26 11:36 ` Borislav Petkov 2018-09-26 11:36 ` Borislav Petkov 2018-09-27 13:16 ` Jarkko Sakkinen 2018-09-27 13:16 ` Jarkko Sakkinen 2018-09-27 13:51 ` Borislav Petkov 2018-09-27 13:51 ` Borislav Petkov 2018-09-27 14:52 ` Jarkko Sakkinen 2018-09-27 14:52 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 05/19] x86/msr: Add SGX definitions to msr-index.h Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 06/19] x86/mm: x86/sgx: Add new 'PF_SGX' page fault error code bit Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 07/19] x86/fault: x86/mm/pkeys: relocate stale comment regarding OSPKE Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 08/19] signal: x86/sgx: Add SIGSEGV siginfo code for SGX EPCM fault Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-26 19:14 ` Sean Christopherson 2018-09-26 19:14 ` Sean Christopherson 2018-09-26 19:14 ` Sean Christopherson 2018-09-27 18:41 ` Eric W. Biederman 2018-09-27 18:41 ` Eric W. Biederman 2018-09-27 18:41 ` Eric W. Biederman 2018-09-25 13:06 ` [PATCH v14 09/19] x86/mm: x86/sgx: Signal SEGV_SGXERR for #PFs w/ PF_SGX Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 22:53 ` Andy Lutomirski 2018-09-25 22:53 ` Andy Lutomirski 2018-09-26 17:35 ` Sean Christopherson 2018-09-26 17:35 ` Sean Christopherson 2018-09-26 18:12 ` Andy Lutomirski 2018-09-26 18:12 ` Andy Lutomirski 2018-09-26 20:16 ` Dave Hansen 2018-09-26 20:16 ` Dave Hansen 2018-09-26 20:44 ` Sean Christopherson 2018-09-26 20:44 ` Sean Christopherson 2018-09-26 20:49 ` Dave Hansen 2018-09-26 20:49 ` Dave Hansen 2018-09-26 21:15 ` Andy Lutomirski 2018-09-26 21:15 ` Andy Lutomirski 2018-09-26 21:45 ` Dave Hansen 2018-09-26 21:45 ` Dave Hansen 2018-09-26 22:37 ` Andy Lutomirski 2018-09-26 22:37 ` Andy Lutomirski 2018-09-27 14:21 ` Jarkko Sakkinen 2018-09-27 14:21 ` Jarkko Sakkinen 2018-09-27 14:41 ` Andy Lutomirski 2018-09-27 14:41 ` Andy Lutomirski 2018-09-27 13:56 ` Jarkko Sakkinen 2018-09-27 13:56 ` Jarkko Sakkinen 2018-10-01 21:42 ` Jethro Beekman 2018-10-01 22:03 ` Dave Hansen 2018-10-31 21:30 ` Sean Christopherson 2018-10-31 21:30 ` Sean Christopherson 2018-10-31 21:35 ` Dave Hansen 2018-10-31 21:35 ` Dave Hansen 2018-10-31 21:53 ` Jethro Beekman 2018-10-31 21:58 ` Dave Hansen 2018-10-31 22:52 ` Andy Lutomirski 2018-10-31 22:52 ` Andy Lutomirski 2018-11-01 17:51 ` Dave Hansen 2018-11-01 17:52 ` Andy Lutomirski 2018-11-01 17:52 ` Andy Lutomirski 2018-11-01 17:42 ` Jarkko Sakkinen 2018-11-01 17:42 ` Jarkko Sakkinen 2018-11-01 17:42 ` Jarkko Sakkinen 2018-11-01 17:44 ` Jarkko Sakkinen 2018-11-01 17:44 ` Jarkko Sakkinen 2018-11-01 17:44 ` Jarkko Sakkinen 2018-10-02 0:31 ` Jarkko Sakkinen 2018-10-02 0:31 ` Jarkko Sakkinen 2018-10-01 14:29 ` Sean Christopherson 2018-10-01 14:29 ` Sean Christopherson 2018-10-01 14:41 ` Dave Hansen 2018-10-01 14:41 ` Dave Hansen 2018-10-02 0:07 ` Jarkko Sakkinen 2018-10-02 0:07 ` Jarkko Sakkinen 2018-09-27 13:42 ` Jarkko Sakkinen 2018-09-27 13:42 ` Jarkko Sakkinen 2018-09-27 14:58 ` Dave Hansen 2018-09-27 14:58 ` Dave Hansen 2018-09-27 15:39 ` Jarkko Sakkinen 2018-09-27 15:39 ` Jarkko Sakkinen 2018-09-27 15:53 ` Dave Hansen 2018-09-27 15:53 ` Dave Hansen 2018-09-27 13:14 ` Jarkko Sakkinen 2018-09-27 13:14 ` Jarkko Sakkinen 2018-09-27 19:43 ` Eric W. Biederman 2018-09-27 19:43 ` Eric W. Biederman 2018-09-27 19:43 ` Eric W. Biederman 2018-09-28 12:17 ` Jarkko Sakkinen [this message] 2018-09-28 12:17 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 10/19] x86/sgx: Detect Intel SGX Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 20:02 ` Randy Dunlap 2018-09-25 20:02 ` Randy Dunlap 2018-09-25 20:02 ` Randy Dunlap 2018-09-27 13:13 ` Jarkko Sakkinen 2018-09-27 13:13 ` Jarkko Sakkinen 2018-09-27 13:13 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 11/19] x86/sgx: Add wrappers for ENCLS leaf functions Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 20:01 ` Randy Dunlap 2018-09-25 20:01 ` Randy Dunlap 2018-09-25 20:01 ` Randy Dunlap 2018-09-27 13:12 ` Jarkko Sakkinen 2018-09-27 13:12 ` Jarkko Sakkinen 2018-09-27 13:12 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 12/19] x86/sgx: Add data structures for tracking the EPC pages Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 20:00 ` Randy Dunlap 2018-09-25 20:00 ` Randy Dunlap 2018-09-25 20:00 ` Randy Dunlap 2018-09-27 13:11 ` Jarkko Sakkinen 2018-09-27 13:11 ` Jarkko Sakkinen 2018-09-27 13:11 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 13/19] x86/sgx: Enclave Page Cache (EPC) memory manager Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 14/19] x86/sgx: Add sgx_einit() for initializing enclaves Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 15/19] platform/x86: Intel SGX driver Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-10-04 18:01 ` Sean Christopherson 2018-10-04 18:01 ` Sean Christopherson 2018-10-04 18:01 ` Sean Christopherson 2018-10-05 11:32 ` Jarkko Sakkinen 2018-10-05 11:32 ` Jarkko Sakkinen 2018-10-05 11:32 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 16/19] platform/x86: Add swapping functionality to the " Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 17/19] x86/sgx: Add a simple swapper for the EPC memory manager Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 18/19] platform/x86: ptrace() support for the SGX driver Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` [PATCH v14 19/19] x86/sgx: Driver documentation Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:06 ` Jarkko Sakkinen 2018-09-25 13:27 ` Jonathan Corbet 2018-09-25 13:27 ` Jonathan Corbet 2018-09-25 13:27 ` Jonathan Corbet 2018-10-15 20:54 ` Pavel Machek 2018-10-15 20:54 ` Pavel Machek 2018-10-17 23:45 ` Jarkko Sakkinen 2018-10-17 23:45 ` Jarkko Sakkinen 2018-10-18 9:57 ` Pavel Machek 2018-10-18 9:57 ` Pavel Machek 2018-10-19 23:59 ` Jarkko Sakkinen 2018-10-19 23:59 ` Jarkko Sakkinen 2018-10-17 23:56 ` Dave Hansen 2018-10-17 23:56 ` Dave Hansen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=a70563ea8a4bfbf9d531d1bc0ca5f5577e6b83be.camel@linux.intel.com \ --to=jarkko.sakkinen@linux.intel.com \ --cc=andriy.shevchenko@linux.intel.com \ --cc=bp@alien8.de \ --cc=dave.hansen@intel.com \ --cc=dave.hansen@linux.intel.com \ --cc=ebiederm@xmission.com \ --cc=hpa@zytor.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-sgx@vger.kernel.org \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=nhorman@redhat.com \ --cc=npmccallum@redhat.com \ --cc=peterz@infradead.org \ --cc=platform-driver-x86@vger.kernel.org \ --cc=sean.j.christopherson@intel.com \ --cc=serge.ayoun@intel.com \ --cc=shay.katz-zamir@intel.com \ --cc=tglx@linutronix.de \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.