userfaultfd: change src_folio after ensuring it's unpinned in UFFDIO_MOVE
authorLokesh Gidra <lokeshgidra@google.com>
Thu, 4 Apr 2024 17:17:26 +0000 (10:17 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 16 Apr 2024 22:39:48 +0000 (15:39 -0700)
commitc0205eaf3af9f5db14d4b5ee4abacf4a583c3c50
tree6bebb0c72f0b247bdab5804f46b5ed8d0980b9b2
parent631426ba1d45a8672b177ee85ad4cabe760dd131
userfaultfd: change src_folio after ensuring it's unpinned in UFFDIO_MOVE

Commit d7a08838ab74 ("mm: userfaultfd: fix unexpected change to src_folio
when UFFDIO_MOVE fails") moved the src_folio->{mapping, index} changing to
after clearing the page-table and ensuring that it's not pinned.  This
avoids failure of swapout+migration and possibly memory corruption.

However, the commit missed fixing it in the huge-page case.

Link: https://lkml.kernel.org/r/20240404171726.2302435-1-lokeshgidra@google.com
Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Kalesh Singh <kaleshsingh@google.com>
Cc: Lokesh Gidra <lokeshgidra@google.com>
Cc: Nicolas Geoffray <ngeoffray@google.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/huge_memory.c