|
@@ -1775,6 +1775,8 @@ static int __split_huge_page_map(struct page *page,
|
|
|
if (pmd) {
|
|
|
pgtable = pgtable_trans_huge_withdraw(mm, pmd);
|
|
|
pmd_populate(mm, &_pmd, pgtable);
|
|
|
+ if (pmd_write(*pmd))
|
|
|
+ BUG_ON(page_mapcount(page) != 1);
|
|
|
|
|
|
haddr = address;
|
|
|
for (i = 0; i < HPAGE_PMD_NR; i++, haddr += PAGE_SIZE) {
|
|
@@ -1784,8 +1786,6 @@ static int __split_huge_page_map(struct page *page,
|
|
|
entry = maybe_mkwrite(pte_mkdirty(entry), vma);
|
|
|
if (!pmd_write(*pmd))
|
|
|
entry = pte_wrprotect(entry);
|
|
|
- else
|
|
|
- BUG_ON(page_mapcount(page) != 1);
|
|
|
if (!pmd_young(*pmd))
|
|
|
entry = pte_mkold(entry);
|
|
|
if (pmd_numa(*pmd))
|