On Fri, 27 Jan 2017 20:44:31 +0200 Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> wrote: > Allow userfaultfd monitor track termination of the processes that have > memory backed by the uffd. > > --- a/fs/userfaultfd.c > +++ b/fs/userfaultfd.c > @@ -774,6 +774,30 @@ void userfaultfd_unmap_complete(struct mm_struct *mm, struct list_head *uf) > } > } > > +void userfaultfd_exit(struct mm_struct *mm) > +{ > + struct vm_area_struct *vma = mm->mmap; > + > + while (vma) { > + struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx; > + > + if (ctx && (ctx->features & UFFD_FEATURE_EVENT_EXIT)) { > + struct userfaultfd_wait_queue ewq; > + > + userfaultfd_ctx_get(ctx); > + > + msg_init(&ewq.msg); > + ewq.msg.event = UFFD_EVENT_EXIT; > + > + userfaultfd_event_wait_completion(ctx, &ewq); > + > + ctx->features &= ~UFFD_FEATURE_EVENT_EXIT; > + } > + > + vma = vma->vm_next; > + } > +} And we can do the vma walk without locking because the caller (exit_mm) knows it now has exclusive access. Worth a comment? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>