aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/huge_memory.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 0e7ded98d114..0d3ae51ce4f7 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2205,10 +2205,9 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
2205 * for the same virtual address to be loaded simultaneously. So instead 2205 * for the same virtual address to be loaded simultaneously. So instead
2206 * of doing "pmd_populate(); flush_pmd_tlb_range();" we first mark the 2206 * of doing "pmd_populate(); flush_pmd_tlb_range();" we first mark the
2207 * current pmd notpresent (atomically because here the pmd_trans_huge 2207 * current pmd notpresent (atomically because here the pmd_trans_huge
2208 * and pmd_trans_splitting must remain set at all times on the pmd 2208 * must remain set at all times on the pmd until the split is complete
2209 * until the split is complete for this pmd), then we flush the SMP TLB 2209 * for this pmd), then we flush the SMP TLB and finally we write the
2210 * and finally we write the non-huge version of the pmd entry with 2210 * non-huge version of the pmd entry with pmd_populate.
2211 * pmd_populate.
2212 */ 2211 */
2213 pmdp_invalidate(vma, haddr, pmd); 2212 pmdp_invalidate(vma, haddr, pmd);
2214 pmd_populate(mm, pmd, pgtable); 2213 pmd_populate(mm, pmd, pgtable);