mm/migrate: revert "mm/migrate: fix wrongly apply write bit after mkdirty on sparc64"
This reverts commit96a9c287e2
("mm/migrate: fix wrongly apply write bit after mkdirty on sparc64"). Now that sparc64 mkdirty handling is fixed and no longer sets a PTE/PMD writable that shouldn't be writable, let's revert the temporary fix. The mkdirty mm selftest still passes with this change on sparc64. Note that loongarch handling was fixed in commitbf2f34a506
("LoongArch: Set _PAGE_DIRTY only if _PAGE_WRITE is set in {pmd,pte}_mkdirty()"). Link: https://lkml.kernel.org/r/20230411142512.438404-5-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: David S. Miller <davem@davemloft.net> Cc: Hugh Dickins <hughd@google.com> Cc: Peter Xu <peterx@redhat.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Shuah Khan <shuah@kernel.org> Cc: Yu Zhao <yuzhao@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Родитель
fa2e71a6fc
Коммит
3c811f7883
|
@ -3276,6 +3276,8 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
|
|||
pmde = mk_huge_pmd(new, READ_ONCE(vma->vm_page_prot));
|
||||
if (pmd_swp_soft_dirty(*pvmw->pmd))
|
||||
pmde = pmd_mksoft_dirty(pmde);
|
||||
if (is_writable_migration_entry(entry))
|
||||
pmde = maybe_pmd_mkwrite(pmde, vma);
|
||||
if (pmd_swp_uffd_wp(*pvmw->pmd))
|
||||
pmde = pmd_mkuffd_wp(pmde);
|
||||
if (!is_migration_entry_young(entry))
|
||||
|
@ -3283,10 +3285,6 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
|
|||
/* NOTE: this may contain setting soft-dirty on some archs */
|
||||
if (PageDirty(new) && is_migration_entry_dirty(entry))
|
||||
pmde = pmd_mkdirty(pmde);
|
||||
if (is_writable_migration_entry(entry))
|
||||
pmde = maybe_pmd_mkwrite(pmde, vma);
|
||||
else
|
||||
pmde = pmd_wrprotect(pmde);
|
||||
|
||||
if (PageAnon(new)) {
|
||||
rmap_t rmap_flags = RMAP_COMPOUND;
|
||||
|
|
|
@ -225,8 +225,6 @@ static bool remove_migration_pte(struct folio *folio,
|
|||
pte = maybe_mkwrite(pte, vma);
|
||||
else if (pte_swp_uffd_wp(*pvmw.pte))
|
||||
pte = pte_mkuffd_wp(pte);
|
||||
else
|
||||
pte = pte_wrprotect(pte);
|
||||
|
||||
if (folio_test_anon(folio) && !is_readable_migration_entry(entry))
|
||||
rmap_flags |= RMAP_EXCLUSIVE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче