aboutsummaryrefslogtreecommitdiffstats
path: root/mm/huge_memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r--mm/huge_memory.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 46f96c23cc27..817a875f2b8c 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1035,7 +1035,7 @@ static int do_huge_pmd_wp_page_fallback(struct mm_struct *mm,
1035 goto out_free_pages; 1035 goto out_free_pages;
1036 VM_BUG_ON_PAGE(!PageHead(page), page); 1036 VM_BUG_ON_PAGE(!PageHead(page), page);
1037 1037
1038 pmdp_clear_flush(vma, haddr, pmd); 1038 pmdp_clear_flush_notify(vma, haddr, pmd);
1039 /* leave pmd empty until pte is filled */ 1039 /* leave pmd empty until pte is filled */
1040 1040
1041 pgtable = pgtable_trans_huge_withdraw(mm, pmd); 1041 pgtable = pgtable_trans_huge_withdraw(mm, pmd);
@@ -1178,7 +1178,7 @@ alloc:
1178 pmd_t entry; 1178 pmd_t entry;
1179 entry = mk_huge_pmd(new_page, vma->vm_page_prot); 1179 entry = mk_huge_pmd(new_page, vma->vm_page_prot);
1180 entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma); 1180 entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
1181 pmdp_clear_flush(vma, haddr, pmd); 1181 pmdp_clear_flush_notify(vma, haddr, pmd);
1182 page_add_new_anon_rmap(new_page, vma, haddr); 1182 page_add_new_anon_rmap(new_page, vma, haddr);
1183 mem_cgroup_commit_charge(new_page, memcg, false); 1183 mem_cgroup_commit_charge(new_page, memcg, false);
1184 lru_cache_add_active_or_unevictable(new_page, vma); 1184 lru_cache_add_active_or_unevictable(new_page, vma);
@@ -1512,7 +1512,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
1512 pmd_t entry; 1512 pmd_t entry;
1513 ret = 1; 1513 ret = 1;
1514 if (!prot_numa) { 1514 if (!prot_numa) {
1515 entry = pmdp_get_and_clear(mm, addr, pmd); 1515 entry = pmdp_get_and_clear_notify(mm, addr, pmd);
1516 if (pmd_numa(entry)) 1516 if (pmd_numa(entry))
1517 entry = pmd_mknonnuma(entry); 1517 entry = pmd_mknonnuma(entry);
1518 entry = pmd_modify(entry, newprot); 1518 entry = pmd_modify(entry, newprot);
@@ -1644,6 +1644,7 @@ static int __split_huge_page_splitting(struct page *page,
1644 * serialize against split_huge_page*. 1644 * serialize against split_huge_page*.
1645 */ 1645 */
1646 pmdp_splitting_flush(vma, address, pmd); 1646 pmdp_splitting_flush(vma, address, pmd);
1647
1647 ret = 1; 1648 ret = 1;
1648 spin_unlock(ptl); 1649 spin_unlock(ptl);
1649 } 1650 }
@@ -2834,7 +2835,7 @@ static void __split_huge_zero_page_pmd(struct vm_area_struct *vma,
2834 pmd_t _pmd; 2835 pmd_t _pmd;
2835 int i; 2836 int i;
2836 2837
2837 pmdp_clear_flush(vma, haddr, pmd); 2838 pmdp_clear_flush_notify(vma, haddr, pmd);
2838 /* leave pmd empty until pte is filled */ 2839 /* leave pmd empty until pte is filled */
2839 2840
2840 pgtable = pgtable_trans_huge_withdraw(mm, pmd); 2841 pgtable = pgtable_trans_huge_withdraw(mm, pmd);