|
@@ -3711,6 +3711,14 @@ retry:
|
|
|
if (pmd_trans_huge(orig_pmd)) {
|
|
|
unsigned int dirty = flags & FAULT_FLAG_WRITE;
|
|
|
|
|
|
+ /*
|
|
|
+ * If the pmd is splitting, return and retry the
|
|
|
+ * the fault. Alternative: wait until the split
|
|
|
+ * is done, and goto retry.
|
|
|
+ */
|
|
|
+ if (pmd_trans_splitting(orig_pmd))
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (pmd_numa(orig_pmd))
|
|
|
return do_huge_pmd_numa_page(mm, vma, address,
|
|
|
orig_pmd, pmd);
|