summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Song <v-songbaohua@oppo.com>2024-06-08 00:13:58 +0300
committerAndrew Morton <akpm@linux-foundation.org>2024-07-04 05:30:07 +0300
commit20dfa5b7adc5a1f8b5b7ff9b014d0bd1845c990b (patch)
treef44e68f410f5295568d4e30c2c344c264fa5cc5e
parentf38ee2851918134c1e04730b79714a1a5c895aed (diff)
downloadlinux-20dfa5b7adc5a1f8b5b7ff9b014d0bd1845c990b.tar.xz
mm: set pte writable while pte_soft_dirty() is true in do_swap_page()
This patch leverages the new pte_needs_soft_dirty_wp() helper to optimize a scenario where softdirty is enabled, but the softdirty flag has already been set in do_swap_page(). In this situation, we can use pte_mkwrite instead of applying write-protection since we don't depend on write faults. Link: https://lkml.kernel.org/r/20240607211358.4660-3-21cnbao@gmail.com Signed-off-by: Barry Song <v-songbaohua@oppo.com> Suggested-by: David Hildenbrand <david@redhat.com> Acked-by: David Hildenbrand <david@redhat.com> Cc: Chris Li <chrisl@kernel.org> Cc: Kairui Song <kasong@tencent.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Suren Baghdasaryan <surenb@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/memory.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 44a81d737f1e..d8a0b7d2e15b 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4324,7 +4324,7 @@ check_folio:
if (!folio_test_ksm(folio) &&
(exclusive || folio_ref_count(folio) == 1)) {
if ((vma->vm_flags & VM_WRITE) && !userfaultfd_pte_wp(vma, pte) &&
- !vma_soft_dirty_enabled(vma)) {
+ !pte_needs_soft_dirty_wp(vma, pte)) {
pte = pte_mkwrite(pte, vma);
if (vmf->flags & FAULT_FLAG_WRITE) {
pte = pte_mkdirty(pte);