Message ID | 20210304095423.3825684-1-namit@vmware.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4] mm/userfaultfd: fix memory corruption due to writeprotect | expand |
diff --git a/mm/memory.c b/mm/memory.c index 9e8576a83147..79253cb3bcd5 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3092,6 +3092,14 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf) return handle_userfault(vmf, VM_UFFD_WP); } + /* + * Userfaultfd write-protect can defer flushes. Ensure the TLB + * is flushed in this case before copying. + */ + if (unlikely(userfaultfd_wp(vmf->vma) && + mm_tlb_flush_pending(vmf->vma->vm_mm))) + flush_tlb_page(vmf->vma, vmf->address); + vmf->page = vm_normal_page(vma, vmf->address, vmf->orig_pte); if (!vmf->page) { /*