aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
authorMike Rapoport (Microsoft) <rppt@kernel.org>2026-05-27 21:47:50 +0300
committerAndrew Morton <akpm@linux-foundation.org>2026-05-28 21:30:15 -0700
commitb4bbda7f4e1b61bc04c1259a2f4ad43da7ab86be (patch)
tree7e2f2298addb8e2ce1b9408715b1e34d454e4eb1 /mm
parent9568102be2b678151d18b790469e5a7883c4e412 (diff)
downloadlinux-next-history-b4bbda7f4e1b61bc04c1259a2f4ad43da7ab86be.tar.gz
userfaultfd: refuse to __mfill_atomic_pte() for unsupported VMAs
__mfill_atomic_pte() unconditionally dereferences ops because there is an assumption that VMAs that can undergo mfill_* operations are vetted on registration and must have valid vm_uffd_ops. Add a guard against potential bugs and make sure __mfill_atomic_pte() bails out if ops is NULL. Link: https://lore.kernel.org/20260527184751.4147364-3-rppt@kernel.org Fixes: ad9ac3081332 ("userfaultfd: introduce vm_uffd_ops->alloc_folio()") Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Suggested-by: Lorenzo Stoakes <ljs@kernel.org> Reviewed-by: Lorenzo Stoakes <ljs@kernel.org> Reviewed-by: David CARLIER <devnexen@gmail.com> Cc: David Hildenbrand <david@kernel.org> Cc: Liam R. Howlett <liam@infradead.org> Cc: Michael Bommarito <michael.bommarito@gmail.com> Cc: Peter Xu <peterx@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/userfaultfd.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
index e5d2fb3ce2c1a..2872c71bbf369 100644
--- a/mm/userfaultfd.c
+++ b/mm/userfaultfd.c
@@ -552,6 +552,11 @@ static int __mfill_atomic_pte(struct mfill_state *state,
struct folio *folio;
int ret;
+ if (!ops) {
+ VM_WARN_ONCE(1, "UFFDIO_COPY for unsupported VMA");
+ return -EOPNOTSUPP;
+ }
+
folio = ops->alloc_folio(state->vma, state->dst_addr);
if (!folio)
return -ENOMEM;