mm: Dirty accountable change only apply to non prot numa case
So move it within the if loop Acked-by: Mel Gorman <mgorman@suse.de> Reviewed-by: Rik van Riel <riel@redhat.com> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
88247e8d7b
commit
9d85d5863f
|
@ -58,6 +58,13 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|||
if (pte_numa(ptent))
|
||||
ptent = pte_mknonnuma(ptent);
|
||||
ptent = pte_modify(ptent, newprot);
|
||||
/*
|
||||
* Avoid taking write faults for pages we
|
||||
* know to be dirty.
|
||||
*/
|
||||
if (dirty_accountable && pte_dirty(ptent))
|
||||
ptent = pte_mkwrite(ptent);
|
||||
ptep_modify_prot_commit(mm, addr, pte, ptent);
|
||||
updated = true;
|
||||
} else {
|
||||
struct page *page;
|
||||
|
@ -72,22 +79,8 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Avoid taking write faults for pages we know to be
|
||||
* dirty.
|
||||
*/
|
||||
if (dirty_accountable && pte_dirty(ptent)) {
|
||||
ptent = pte_mkwrite(ptent);
|
||||
updated = true;
|
||||
}
|
||||
|
||||
if (updated)
|
||||
pages++;
|
||||
|
||||
/* Only !prot_numa always clears the pte */
|
||||
if (!prot_numa)
|
||||
ptep_modify_prot_commit(mm, addr, pte, ptent);
|
||||
} else if (IS_ENABLED(CONFIG_MIGRATION) && !pte_file(oldpte)) {
|
||||
swp_entry_t entry = pte_to_swp_entry(oldpte);
|
||||
|
||||
|
|
Loading…
Reference in New Issue