summaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2016-05-20 16:58:36 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-20 17:58:30 -0700
commitd2005e3f41d4f9299e2df6a967c8beb5086967a9 (patch)
tree075dc5ba6de68cfe96acdb91478595e7d3366f2e /mm/page_alloc.c
parentcd33a76b0f2805fb0d6a05a2d53933f3817ccc9b (diff)
downloadop-kernel-dev-d2005e3f41d4f9299e2df6a967c8beb5086967a9.zip
op-kernel-dev-d2005e3f41d4f9299e2df6a967c8beb5086967a9.tar.gz
userfaultfd: don't pin the user memory in userfaultfd_file_create()
userfaultfd_file_create() increments mm->mm_users; this means that the memory won't be unmapped/freed if mm owner exits/execs, and UFFDIO_COPY after that can populate the orphaned mm more. Change userfaultfd_file_create() and userfaultfd_ctx_put() to use mm->mm_count to pin mm_struct. This means that atomic_inc_not_zero(mm->mm_users) is needed when we are going to actually play with this memory. Except handle_userfault() path doesn't need this, the caller must already have a reference. The patch adds the new trivial helper, mmget_not_zero(), it can have more users. Link: http://lkml.kernel.org/r/20160516172254.GA8595@redhat.com Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Michal Hocko <mhocko@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud