On Tue, Jan 29, 2019 at 1:32 AM Jens Axboe <axboe@xxxxxxxxx> wrote: > On 1/28/19 5:03 PM, Jens Axboe wrote: > >> But you only do that teardown on ->release, right? And ->release > >> doesn't have much to do with the process lifetime. > > > > Yes, only on ->relase(). > > OK, so I reworked the files struct to just grab it, then we ensure that > doesn't go away. For mm, it's a bit more tricky. I think the best > solution here is to add a fops->flush() and check for the process > exiting its files. If it does, we quiesce the async contexts and prevent > further use of that mm. We can't just keep holding a reference to the mm > like we do with the files. > > That should solve both cases. You still have to hold a reference on the mm though, I think (for example, because two tasks might be sharing the fd table without sharing the mm).