From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751163AbdBBJPJ (ORCPT ); Thu, 2 Feb 2017 04:15:09 -0500 Received: from mx2.suse.de ([195.135.220.15]:39705 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751100AbdBBJPH (ORCPT ); Thu, 2 Feb 2017 04:15:07 -0500 Date: Thu, 2 Feb 2017 10:15:03 +0100 From: Michal Hocko To: Mike Rapoport Cc: Andrew Morton , Andrea Arcangeli , "Dr. David Alan Gilbert" , Hillf Danton , Mike Kravetz , Pavel Emelyanov , Linux-MM , LKML Subject: Re: [PATCH v2 2/5] userfaultfd: non-cooperative: add event for memory unmaps Message-ID: <20170202091503.GA22823@dhcp22.suse.cz> References: <1485542673-24387-1-git-send-email-rppt@linux.vnet.ibm.com> <1485542673-24387-3-git-send-email-rppt@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1485542673-24387-3-git-send-email-rppt@linux.vnet.ibm.com> User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 27-01-17 20:44:30, Mike Rapoport wrote: > When a non-cooperative userfaultfd monitor copies pages in the background, > it may encounter regions that were already unmapped. Addition of > UFFD_EVENT_UNMAP allows the uffd monitor to track precisely changes in the > virtual memory layout. > > Since there might be different uffd contexts for the affected VMAs, we > first should create a temporary representation for the unmap event for each > uffd context and then notify them one by one to the appropriate userfault > file descriptors. > > The event notification occurs after the mmap_sem has been released. > > Signed-off-by: Mike Rapoport > Acked-by: Hillf Danton This breaks NOMMU compilation --- >>From 510948533b059f4f5033464f9f4a0c32d4ab0c08 Mon Sep 17 00:00:00 2001 From: Michal Hocko Date: Thu, 2 Feb 2017 10:08:47 +0100 Subject: [PATCH] mmotm: userfaultfd-non-cooperative-add-event-for-memory-unmaps-fix This breaks compilation on nommu configs. mm/nommu.c:1201:15: error: conflicting types for 'do_mmap' unsigned long do_mmap(struct file *file, ^ In file included from mm/nommu.c:19:0: ./include/linux/mm.h:2089:22: note: previous declaration of 'do_mmap' was here extern unsigned long do_mmap(struct file *file, unsigned long addr, ^ mm/nommu.c:1580:5: error: conflicting types for 'do_munmap' int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) ^ In file included from mm/nommu.c:19:0: ./include/linux/mm.h:2093:12: note: previous declaration of 'do_munmap' was here extern int do_munmap(struct mm_struct *, unsigned long, size_t, ^ make[1]: *** [mm/nommu.o] Error 1 CONFIG_USERFAULTFD depends on CONFIG_MMU so I guess we are OK to just ignore the argument. Signed-off-by: Michal Hocko --- mm/nommu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/nommu.c b/mm/nommu.c index d35088a4b73d..f78d06459ba4 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -1205,7 +1205,8 @@ unsigned long do_mmap(struct file *file, unsigned long flags, vm_flags_t vm_flags, unsigned long pgoff, - unsigned long *populate) + unsigned long *populate, + struct list_head *uf_unused) { struct vm_area_struct *vma; struct vm_region *region; @@ -1577,7 +1578,7 @@ static int shrink_vma(struct mm_struct *mm, * - under NOMMU conditions the chunk to be unmapped must be backed by a single * VMA, though it need not cover the whole VMA */ -int do_munmap(struct mm_struct *mm, unsigned long start, size_t len) +int do_munmap(struct mm_struct *mm, unsigned long start, size_t len, struct list_head *uf) { struct vm_area_struct *vma; unsigned long end; @@ -1643,7 +1644,7 @@ int vm_munmap(unsigned long addr, size_t len) int ret; down_write(&mm->mmap_sem); - ret = do_munmap(mm, addr, len); + ret = do_munmap(mm, addr, len, NULL); up_write(&mm->mmap_sem); return ret; } -- 2.11.0 -- Michal Hocko SUSE Labs