BACKPORT: userfaultfd: use per-vma locks in userfaultfd operations
All userfaultfd operations, except write-protect, opportunistically use per-vma locks to lock vmas. On failure, attempt again inside mmap_lock critical section. Write-protect operation requires mmap_lock as it iterates over multiple vmas. Link: https://lkml.kernel.org/r/20240215182756.3448972-5-lokeshgidra@google.com Signed-off-by:Lokesh Gidra <lokeshgidra@google.com> Reviewed-by:
Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Brian Geffon <bgeffon@google.com> Cc: David Hildenbrand <david@redhat.com> Cc: Jann Horn <jannh@google.com> Cc: Kalesh Singh <kaleshsingh@google.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Mike Rapoport (IBM) <rppt@kernel.org> Cc: Nicolas Geoffray <ngeoffray@google.com> Cc: Peter Xu <peterx@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Tim Murray <timmurray@google.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> (cherry picked from commit 867a43a3) Conflicts: mm/userfaultfd.c 1. Resolve conflict in validate_dst_vma() due to absence of range_in_vma(). 2. Use 'page' instead of 'folio' for BUG_ON on copy_from_user() failure in COPY ioctl. 3. Resolve conflict around mfill_file_over_size(). 4. Resolve conflict in comment for __mcopy_atomic_hugetlb() due to function name change. 5. Resolve conflict due to use of 'flags' instead of 'mode' in __mcopy_atomic_hugetlb(). 6. Use find_vma() and validate_dst_vma() in mwriteprotect_range() instead of find_dst_vma(). Bug: 320478828 Bug: 339845931 Signed-off-by:
Lokesh Gidra <lokeshgidra@google.com> (cherry picked from https://android-review.googlesource.com/q/commit:ce2896c0c6a5777721bdc703b1b89b1760e79854) Merged-In: I6d5b7101218cb1b11329108c3f31f12bb1caebc6 Change-Id: I6d5b7101218cb1b11329108c3f31f12bb1caebc6
Loading
Please sign in to comment