• Reinette Chatre's avatar
    selftests/sgx: Add test for EPCM permission changes · 20404a80
    Reinette Chatre authored
    EPCM permission changes could be made from within (to relax
    permissions) or out (to restrict permissions) the enclave. Kernel
    support is needed when permissions are restricted to be able to
    call the privileged ENCLS[EMODPR] instruction. EPCM permissions
    can be relaxed via ENCLU[EMODPE] from within the enclave but the
    enclave still depends on the kernel to install PTEs with the needed
    permissions.
    
    Add a test that exercises a few of the enclave page permission flows:
    1) Test starts with a RW (from enclave and kernel perspective)
       enclave page that is mapped via a RW VMA.
    2) Use the SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS ioctl() to restrict
       the enclave (EPCM) page permissions to read-only.
    3) Run ENCLU[EACCEPT] from within the enclave to accept the new page
       permissions.
    4) Attempt to write to the enclave page from within the enclave - this
       should fail with a page fault on the EPCM permissions since the page
       table entry continues to allow RW access.
    5) Restore EPCM permissions to RW by running ENCLU[EMODPE] from within
       the enclave.
    6) Attempt to write to the enclave page from within the enclave - this
       should succeed since both EPCM and PTE permissions allow this access.
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Acked-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
    Link: https://lkml.kernel.org/r/2617bf2b2d1e27ca1d0096e1192ae5896baf3f80.1652137848.git.reinette.chatre@intel.com
    20404a80
defines.h 1.25 KB