Re: [PATCH v2 3/5] userfaultfd: non-cooperative: add event for exit() notification
From: Mike Rapoport <hidden>
Date: 2017-02-01 06:35:19
Also in:
lkml
On Tue, Jan 31, 2017 at 04:41:32PM -0800, Andrew Morton wrote:
On Fri, 27 Jan 2017 20:44:31 +0200 Mike Rapoport [off-list ref] wrote:quoted
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?
Sure, will add. Do you prefer an incremental patch or update this one? -- Sincerely yours, Mike. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>