From: Mike Rapoport <rppt@linux.vnet.ibm.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Andrea Arcangeli <aarcange@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Hillf Danton <hillf.zj@alibaba-inc.com>, Mike Kravetz <mike.kravetz@oracle.com>, Pavel Emelyanov <xemul@virtuozzo.com>, Linux-MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org> Subject: [PATCH] userfaultfd: mcopy_atomic: update cases returning -ENOENT Date: Tue, 7 Feb 2017 17:02:50 +0200 [thread overview] Message-ID: <20170207150249.GA6709@rapoport-lnx> (raw) Hello Andrew, The patch below is an incremental fixup for concerns Andrea raised at [1]. Please let me know if you prefer me to update the original patch and resend. [1] http://www.spinics.net/lists/linux-mm/msg121267.html -- Sincerely yours, Mike. >From 8acff65ecee8ca4cc892d35b45125c34568d1c93 Mon Sep 17 00:00:00 2001 From: Mike Rapoport <rppt@linux.vnet.ibm.com> Date: Tue, 7 Feb 2017 11:50:17 +0200 Subject: [PATCH] userfaultfd: mcopy_atomic: update cases returning -ENOENT As Andrea commented in [1], if the VMA covering the address was unmapped, we may end up with a VMA a way above the faulting address. In this case we would like to return -ENOENT to allow uffd monitor detection of VMA removal. [1] http://www.spinics.net/lists/linux-mm/msg121267.html Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com> --- mm/userfaultfd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index b861cf9..cf43456 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -206,6 +206,10 @@ static __always_inline ssize_t __mcopy_atomic_hugetlb(struct mm_struct *dst_mm, if (!dst_vma->vm_userfaultfd_ctx.ctx) goto out_unlock; + if (dst_start < dst_vma->vm_start || + dst_start + len > dst_vma->vm_end) + goto out_unlock; + err = -EINVAL; if (vma_hpagesize != vma_kernel_pagesize(dst_vma)) goto out_unlock; @@ -216,9 +220,6 @@ static __always_inline ssize_t __mcopy_atomic_hugetlb(struct mm_struct *dst_mm, */ if (dst_vma->vm_flags & VM_SHARED) goto out_unlock; - if (dst_start < dst_vma->vm_start || - dst_start + len > dst_vma->vm_end) - goto out_unlock; } if (WARN_ON(dst_addr & (vma_hpagesize - 1) || @@ -385,13 +386,14 @@ static __always_inline ssize_t __mcopy_atomic(struct mm_struct *dst_mm, if (!dst_vma->vm_userfaultfd_ctx.ctx) goto out_unlock; - err = -EINVAL; - if (!vma_is_shmem(dst_vma) && dst_vma->vm_flags & VM_SHARED) - goto out_unlock; if (dst_start < dst_vma->vm_start || dst_start + len > dst_vma->vm_end) goto out_unlock; + err = -EINVAL; + if (!vma_is_shmem(dst_vma) && dst_vma->vm_flags & VM_SHARED) + goto out_unlock; + /* * If this is a HUGETLB vma, pass off to appropriate routine */ -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@linux.vnet.ibm.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Andrea Arcangeli <aarcange@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Hillf Danton <hillf.zj@alibaba-inc.com>, Mike Kravetz <mike.kravetz@oracle.com>, Pavel Emelyanov <xemul@virtuozzo.com>, Linux-MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org> Subject: [PATCH] userfaultfd: mcopy_atomic: update cases returning -ENOENT Date: Tue, 7 Feb 2017 17:02:50 +0200 [thread overview] Message-ID: <20170207150249.GA6709@rapoport-lnx> (raw) Hello Andrew, The patch below is an incremental fixup for concerns Andrea raised at [1]. Please let me know if you prefer me to update the original patch and resend. [1] http://www.spinics.net/lists/linux-mm/msg121267.html -- Sincerely yours, Mike.
next reply other threads:[~2017-02-07 15:03 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-07 15:02 Mike Rapoport [this message] 2017-02-07 15:02 ` [PATCH] userfaultfd: mcopy_atomic: update cases returning -ENOENT Mike Rapoport 2017-02-07 20:06 ` Andrea Arcangeli 2017-02-07 20:06 ` Andrea Arcangeli
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170207150249.GA6709@rapoport-lnx \ --to=rppt@linux.vnet.ibm.com \ --cc=aarcange@redhat.com \ --cc=akpm@linux-foundation.org \ --cc=dgilbert@redhat.com \ --cc=hillf.zj@alibaba-inc.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mike.kravetz@oracle.com \ --cc=xemul@virtuozzo.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.