summaryrefslogtreecommitdiffstats
path: root/arch/x86/crypto/poly1305_glue.c
diff options
context:
space:
mode:
authorSean Christopherson <sean.j.christopherson@intel.com>2020-11-13 00:01:17 +0200
committerBorislav Petkov <bp@suse.de>2020-11-17 14:36:13 +0100
commit74faeee06db81a06add0def6a394210c8fef0ab7 (patch)
treec5287d2695d9aae8cbf0a784cb8a3fbb8e5e0007 /arch/x86/crypto/poly1305_glue.c
parente7e0545299d8cb0fd6fe3ba50401b7f5c3937362 (diff)
downloadlinux-74faeee06db81a06add0def6a394210c8fef0ab7.tar.bz2
x86/mm: Signal SIGSEGV with PF_SGX
The x86 architecture has a set of page fault error codes. These indicate things like whether the fault occurred from a write, or whether it originated in userspace. The SGX hardware architecture has its own per-page memory management metadata (EPCM) [*] and hardware which is separate from the normal x86 MMU. The architecture has a new page fault error code: PF_SGX. This new error code bit is set whenever a page fault occurs as the result of the SGX MMU. These faults occur for a variety of reasons. For instance, an access attempt to enclave memory from outside the enclave causes a PF_SGX fault. PF_SGX would also be set for permission conflicts, such as if a write to an enclave page occurs and the page is marked read-write in the x86 page tables but is read-only in the EPCM. These faults do not always indicate errors, though. SGX pages are encrypted with a key that is destroyed at hardware reset, including suspend. Throwing a SIGSEGV allows user space software to react and recover when these events occur. Include PF_SGX in the PF error codes list and throw SIGSEGV when it is encountered. [*] Intel SDM: 36.5.1 Enclave Page Cache Map (EPCM) [ bp: Add bit 15 to the comment above enum x86_pf_error_code too. ] Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Jethro Beekman <jethro@fortanix.com> Link: https://lkml.kernel.org/r/20201112220135.165028-7-jarkko@kernel.org
Diffstat (limited to 'arch/x86/crypto/poly1305_glue.c')
0 files changed, 0 insertions, 0 deletions