X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fhuge_memory.c;h=da23eb96779f2bfb4e893eece4774f14499ebaaa;hb=cf71d2bc0b8a473209d5c770ce560853bd720d14;hp=82166bf974e14262ecfb064ea7c173d006d3ab98;hpb=ab5318788c6725b6d5c95aff28e63af4c35a0e2c;p=~andy%2Flinux diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 82166bf974e..da23eb96779 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1545,6 +1545,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, entry = pmd_mknonnuma(entry); entry = pmd_modify(entry, newprot); ret = HPAGE_PMD_NR; + set_pmd_at(mm, addr, pmd, entry); BUG_ON(pmd_write(entry)); } else { struct page *page = pmd_page(*pmd); @@ -1557,16 +1558,10 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, */ if (!is_huge_zero_page(page) && !pmd_numa(*pmd)) { - entry = *pmd; - entry = pmd_mknuma(entry); + pmdp_set_numa(mm, addr, pmd); ret = HPAGE_PMD_NR; } } - - /* Set PMD if cleared earlier */ - if (ret == HPAGE_PMD_NR) - set_pmd_at(mm, addr, pmd, entry); - spin_unlock(ptl); }