> From: Jarkko Sakkinen [mailto:jarkko.sakkinen@xxxxxxxxxxxxxxx] > Sent: Thursday, June 13, 2019 6:48 AM > > On Thu, Jun 06, 2019 at 06:37:10PM +0300, Jarkko Sakkinen wrote: > > On Wed, Jun 05, 2019 at 01:14:04PM -0700, Andy Lutomirski wrote: > > > > > > > > > > On Jun 5, 2019, at 8:17 AM, Jarkko Sakkinen > <jarkko.sakkinen@xxxxxxxxxxxxxxx> wrote: > > > > > > > >> On Tue, Jun 04, 2019 at 10:10:22PM +0000, Xing, Cedric wrote: > > > >> A bit off topic here. This mmap()/mprotect() discussion reminds > > > >> me a question (guess for Jarkko): Now that > > > >> vma->vm_file->private_data keeps a pointer to the enclave, why do > we store it again in vma->vm_private? > > > >> It isn't a big deal but non-NULL vm_private does prevent > > > >> mprotect() from merging adjacent VMAs. > > > > > > > > Same semantics as with a regular mmap i.e. you can close the file > > > > and still use the mapping. > > > > > > > > > > > > > > The file should be properly refcounted — vm_file should not go away > while it’s mapped. > > mm already takes care of that so vm_file does not go away. Still we need > an internal refcount for enclaves to synchronize with the swapper. In > summary nothing needs to be done. I don't get this. The swapper takes a read lock on mm->mmap_sem, which locks the vma, which in turn reference counts vma->vm_file. Why is the internal refcount still needed? > > > Right, makes sense. It is easy one to change essentially just removing > > internal refcount from sgx_encl and using file for the same. I'll > > update this to my tree along with the changes to remove LKM/ACPI bits > ASAP. > > /Jarkko