mm: thp: check pmd_trans_unstable() after split_huge_pmd()
[cascardo/linux.git] / mm / gup.c
index c057784..dee142e 100644 (file)
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -279,6 +279,8 @@ struct page *follow_page_mask(struct vm_area_struct *vma,
                        spin_unlock(ptl);
                        ret = 0;
                        split_huge_pmd(vma, pmd, address);
+                       if (pmd_trans_unstable(pmd))
+                               ret = -EBUSY;
                } else {
                        get_page(page);
                        spin_unlock(ptl);