diff options
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 9 |
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); |