if (result != SCAN_SUCCEED)
goto out_up_write;
+ vma_write_lock(vma);
anon_vma_lock_write(vma->anon_vma);
mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, NULL, mm,
goto drop_hpage;
}
+ /* Lock the vma before taking page table locks */
+ vma_write_lock(vma);
+
start_pte = pte_offset_map_lock(mm, pmd, haddr, &ptl);
result = SCAN_FAIL;
result = SCAN_PTE_UFFD_WP;
goto unlock_next;
}
+ vma_write_lock(vma);
collapse_and_free_pmd(mm, vma, addr, pmd);
if (!cc->is_khugepaged && is_target)
result = set_huge_pmd(vma, addr, pmd, hpage);