]> git.karo-electronics.de Git - linux-beck.git/blobdiff - mm/memory.c
Merge tag 'staging-3.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[linux-beck.git] / mm / memory.c
index 49fb1cf0861172b2860538e7c48afa0279087794..bb1369f7b9b4ba8af51d90a40de8f522aa2470dc 100644 (file)
@@ -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);