summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Rapoport <rppt@linux.vnet.ibm.com>2017-02-25 01:56:05 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-25 04:46:54 +0300
commita6bf53eba98e0c36f51322cd6aa771c0ffa283f3 (patch)
treec1ccbe8b6c2c89d84c1e4b5d3025209e19b89570
parentd811914d87576c562e849c00d9f9beff45038801 (diff)
downloadlinux-a6bf53eba98e0c36f51322cd6aa771c0ffa283f3.tar.xz
userfaultfd: non-cooperative: add madvise() event for MADV_REMOVE request
When a page is removed from a shared mapping, the uffd reader should be notified, so that it won't attempt to handle #PF events for the removed pages. We can reuse the UFFD_EVENT_REMOVE because from the uffd monitor point of view, the semantices of madvise(MADV_DONTNEED) and madvise(MADV_REMOVE) is exactly the same. Link: http://lkml.kernel.org/r/1484814154-1557-3-git-send-email-rppt@linux.vnet.ibm.com Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com> Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> Acked-by: Hillf Danton <hillf.zj@alibaba-inc.com> Acked-by: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/madvise.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/madvise.c b/mm/madvise.c
index ab5ef141cc9b..0012071a6e50 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -520,6 +520,7 @@ static long madvise_remove(struct vm_area_struct *vma,
* mmap_sem.
*/
get_file(f);
+ userfaultfd_remove(vma, prev, start, end);
up_read(&current->mm->mmap_sem);
error = vfs_fallocate(f,
FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,