From: Mike Rapoport <rppt@kernel.org>
To: Tal Zussman <tz2294@columbia.edu>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Andrei Vagin <avagin@google.com>,
Axel Rasmussen <axelrasmussen@google.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Harry Yoo <harry.yoo@oracle.com>, Hugh Dickins <hughd@google.com>,
James Houghton <jthoughton@google.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"Lorenzo Stoakes (Oracle)" <ljs@kernel.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Michal Hocko <mhocko@suse.com>,
Muchun Song <muchun.song@linux.dev>,
Nikita Kalyazin <kalyazin@amazon.com>,
Oscar Salvador <osalvador@suse.de>,
Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Shuah Khan <shuah@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
kvm@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v4 07/15] userfaultfd: introduce vm_uffd_ops
Date: Thu, 9 Apr 2026 20:18:57 +0300 [thread overview]
Message-ID: <adffgfM5ANxtPIEF@kernel.org> (raw)
In-Reply-To: <6a171abc-ebd2-4ddf-8c36-34c66ca42043@columbia.edu>
On Thu, Apr 02, 2026 at 03:32:58PM -0400, Tal Zussman wrote:
> Hi Mike,
>
> On 4/2/26 12:11 AM, Mike Rapoport wrote:
> > @@ -2021,34 +2040,33 @@ ssize_t move_pages(struct userfaultfd_ctx *ctx, unsigned long dst_start,
> > bool vma_can_userfault(struct vm_area_struct *vma, vm_flags_t vm_flags,
> > bool wp_async)
> > {
> > - vm_flags &= __VM_UFFD_FLAGS;
> > + const struct vm_uffd_ops *ops = vma_uffd_ops(vma);
> >
> > - if (vma->vm_flags & VM_DROPPABLE)
> > - return false;
> > -
> > - if ((vm_flags & VM_UFFD_MINOR) &&
> > - (!is_vm_hugetlb_page(vma) && !vma_is_shmem(vma)))
> > - return false;
> > + vm_flags &= __VM_UFFD_FLAGS;
> >
> > /*
> > - * If wp async enabled, and WP is the only mode enabled, allow any
> > + * If WP is the only mode enabled and context is wp async, allow any
> > * memory type.
> > */
> > if (wp_async && (vm_flags == VM_UFFD_WP))
> > return true;
> >
> > + /* For any other mode reject VMAs that don't implement vm_uffd_ops */
> > + if (!ops)
> > + return false;
> > +
> > + if (vma->vm_flags & VM_DROPPABLE)
> > + return false;
> > +
>
> Doesn't moving the VM_DROPPABLE check after the wp_async early return make
> the issue David raised in [1] possible again (i.e. moving swapbacked pages
> into a droppable region using UFFDIO_MOVE)? With this change, VM_DROPPABLE
> pages can now be registered with uffd under wp_async, which allows
> UFFDIO_MOVE.
>
> I think the VM_DROPPABLE check should go right before the wp_async check.
> And it would probably benefit from a comment...
You are right.
Andrew, if it's not too late can you please add this fixup:
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
index f1828106484b..75290483ffc7 100644
--- a/mm/userfaultfd.c
+++ b/mm/userfaultfd.c
@@ -2019,6 +2019,9 @@ bool vma_can_userfault(struct vm_area_struct *vma, vm_flags_t vm_flags,
{
const struct vm_uffd_ops *ops = vma_uffd_ops(vma);
+ if (vma->vm_flags & VM_DROPPABLE)
+ return false;
+
vm_flags &= __VM_UFFD_FLAGS;
/*
@@ -2032,9 +2035,6 @@ bool vma_can_userfault(struct vm_area_struct *vma, vm_flags_t vm_flags,
if (!ops)
return false;
- if (vma->vm_flags & VM_DROPPABLE)
- return false;
-
/*
* If user requested uffd-wp but not enabled pte markers for
* uffd-wp, then only anonymous memory is supported
> Thanks,
> Tal
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2026-04-09 17:19 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-02 4:11 [PATCH v4 00/15] mm, kvm: allow uffd support in guest_memfd Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 01/15] userfaultfd: introduce mfill_copy_folio_locked() helper Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 02/15] userfaultfd: introduce struct mfill_state Mike Rapoport
2026-04-03 11:19 ` Harry Yoo (Oracle)
2026-04-02 4:11 ` [PATCH v4 03/15] userfaultfd: introduce mfill_establish_pmd() helper Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 04/15] userfaultfd: introduce mfill_get_vma() and mfill_put_vma() Mike Rapoport
2026-04-03 12:54 ` Harry Yoo (Oracle)
2026-04-02 4:11 ` [PATCH v4 05/15] userfaultfd: retry copying with locks dropped in mfill_atomic_pte_copy() Mike Rapoport
2026-04-06 1:54 ` Harry Yoo (Oracle)
2026-04-02 4:11 ` [PATCH v4 06/15] userfaultfd: move vma_can_userfault out of line Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 07/15] userfaultfd: introduce vm_uffd_ops Mike Rapoport
2026-04-02 19:32 ` Tal Zussman
2026-04-09 17:18 ` Mike Rapoport [this message]
2026-04-02 4:11 ` [PATCH v4 08/15] shmem, userfaultfd: use a VMA callback to handle UFFDIO_CONTINUE Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 09/15] userfaultfd: introduce vm_uffd_ops->alloc_folio() Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 10/15] shmem, userfaultfd: implement shmem uffd operations using vm_uffd_ops Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 11/15] userfaultfd: mfill_atomic(): remove retry logic Mike Rapoport
2026-04-02 13:47 ` Mike Rapoport
2026-04-02 18:23 ` Andrew Morton
2026-04-02 4:11 ` [PATCH v4 12/15] mm: generalize handling of userfaults in __do_fault() Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 13/15] KVM: guest_memfd: implement userfaultfd operations Mike Rapoport
2026-04-02 22:05 ` Sean Christopherson
2026-04-07 15:01 ` Nikita Kalyazin
2026-04-09 11:50 ` Mike Rapoport
2026-05-15 18:34 ` Ackerley Tng
2026-05-18 20:42 ` Sean Christopherson
2026-05-19 18:56 ` Ackerley Tng
2026-04-02 4:11 ` [PATCH v4 14/15] KVM: selftests: test userfaultfd minor for guest_memfd Mike Rapoport
2026-04-02 4:11 ` [PATCH v4 15/15] KVM: selftests: test userfaultfd missing " Mike Rapoport
2026-04-02 4:35 ` [PATCH v4 00/15] mm, kvm: allow uffd support in guest_memfd Andrew Morton
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=adffgfM5ANxtPIEF@kernel.org \
--to=rppt@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=avagin@google.com \
--cc=axelrasmussen@google.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@kernel.org \
--cc=harry.yoo@oracle.com \
--cc=hughd@google.com \
--cc=jthoughton@google.com \
--cc=kalyazin@amazon.com \
--cc=kvm@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=seanjc@google.com \
--cc=shuah@kernel.org \
--cc=surenb@google.com \
--cc=tz2294@columbia.edu \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/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: link
Be 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.