Message ID | 20220718120212.3180-3-namit@vmware.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [RFC,01/14] userfaultfd: set dirty and young on writeprotect | expand |
On Mon, Jul 18, 2022 at 05:02:00AM -0700, Nadav Amit wrote: > From: Nadav Amit <namit@vmware.com> > > When using userfaultfd write-(un)protect ioctl, try to change the PTE to > be writable. This would save a page-fault afterwards. > > Cc: Andrea Arcangeli <aarcange@redhat.com> > Cc: Andrew Cooper <andrew.cooper3@citrix.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Andy Lutomirski <luto@kernel.org> > Cc: Dave Hansen <dave.hansen@linux.intel.com> > Cc: David Hildenbrand <david@redhat.com> > Cc: Peter Xu <peterx@redhat.com> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Will Deacon <will@kernel.org> > Cc: Yu Zhao <yuzhao@google.com> > Cc: Nick Piggin <npiggin@gmail.com> > Signed-off-by: Nadav Amit <namit@vmware.com> Acked-by: Peter Xu <peterx@redhat.com>
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index e0492f5f06a0..6013b217e9f3 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -799,6 +799,8 @@ int mwriteprotect_range(struct mm_struct *dst_mm, unsigned long start, cp_flags = enable_wp ? MM_CP_UFFD_WP : MM_CP_UFFD_WP_RESOLVE; if (uffd_flags & (UFFD_FLAGS_ACCESS_LIKELY|UFFD_FLAGS_WRITE_LIKELY)) cp_flags |= MM_CP_WILL_NEED; + if (!enable_wp && (uffd_flags & UFFD_FLAGS_WRITE_LIKELY)) + cp_flags |= MM_CP_TRY_CHANGE_WRITABLE; tlb_gather_mmu(&tlb, dst_mm); change_protection(&tlb, dst_vma, start, start + len, newprot, cp_flags);