From: David Hildenbrand Subject: mm-support-gup-triggered-unsharing-of-anonymous-pages-fix Link: https://lkml.kernel.org/r/c003964a-9fa1-b17c-158a-8ccbf4ff8656@redhat.com Cc: Vlastimil Babka Signed-off-by: Andrew Morton --- mm/memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/mm/memory.c~mm-support-gup-triggered-unsharing-of-anonymous-pages-fix +++ a/mm/memory.c @@ -3132,7 +3132,7 @@ static vm_fault_t wp_page_copy(struct vm free_swap_cache(old_page); put_page(old_page); } - return page_copied && !unshare ? VM_FAULT_WRITE : 0; + return (page_copied && !unshare) ? VM_FAULT_WRITE : 0; oom_free_new: put_page(new_page); oom: @@ -4557,7 +4557,7 @@ static inline vm_fault_t wp_huge_pmd(str const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE; if (vma_is_anonymous(vmf->vma)) { - if (unlikely(unshare) && + if (likely(!unshare) && userfaultfd_huge_pmd_wp(vmf->vma, vmf->orig_pmd)) return handle_userfault(vmf, VM_UFFD_WP); return do_huge_pmd_wp_page(vmf); _