diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index bb19455d36e2..6e10b63990a9 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -1345,6 +1345,12 @@ ssize_t move_pages(struct userfaultfd_ctx *ctx, struct mm_struct *mm, err = -ENOENT; break; } + /* Avoid moving zeropages for now */ + if (is_huge_zero_pmd(*src_pmd)) { + spin_unlock(ptl); + err = -EBUSY; + break; + } /* Check if we can move the pmd without splitting it. */ if (move_splits_huge_pmd(dst_addr, src_addr, src_start + len) ||