On 11/3/21 4:22 PM, Jarkko Sakkinen wrote: > --- a/arch/x86/kernel/cpu/sgx/encl.c > +++ b/arch/x86/kernel/cpu/sgx/encl.c > @@ -22,6 +22,7 @@ static int __sgx_encl_eldu(struct sgx_encl_page *encl_page, > { > unsigned long va_offset = encl_page->desc & SGX_ENCL_PAGE_VA_OFFSET_MASK; > struct sgx_encl *encl = encl_page->encl; > + struct inode *inode = file_inode(encl->backing); > struct sgx_pageinfo pginfo; > struct sgx_backing b; > pgoff_t page_index; > @@ -60,6 +61,9 @@ static int __sgx_encl_eldu(struct sgx_encl_page *encl_page, > > sgx_encl_put_backing(&b, false); > > + /* Free the backing memory. */ > + shmem_truncate_range(inode, PFN_PHYS(page_index), PFN_PHYS(page_index) + PAGE_SIZE - 1); > + > return ret; > } This also misses tearing down the backing storage if it is in place at sgx_encl_release(). Does a entry->epc_page==NULL page in there guarantee that it has backing storage?