On Fri, Mar 04, 2022 at 11:35:08AM +0200, Jarkko Sakkinen wrote: > +#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS \ > + _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_perm) What if this was replaced with just SGX_IOC_ENCLAVE_RESET_PAGES, which would simply do EMODPR with PROT_NONE? The main ingredient of EMODPR is to flush out the TLB's, and move a page to pending state, which cannot be done from inside the enclave. It's there because of microarchitecture constraints, and less so to work as a reasonable permission control mechanism (actually it does terrible job on that side and only confuses). Once you have this magic TLB reset button in place you can just do one EACCEPT and EMODPE inside the enclave and you're done. This is also kind of atomic in the sense that EACCEPT free's a page with no rights so no misuse can happend before EMODPE has tuned EPCM. BR, Jarkko