summaryrefslogtreecommitdiff
path: root/mm/userfaultfd.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2025-09-16 08:24:22 +0200
committerIngo Molnar <mingo@kernel.org>2025-09-16 08:24:22 +0200
commit85df1cd15ff5d775e88e23b9fc2a9f429fa5b504 (patch)
treea9988524f4a9dd1e0a5403ba8a99939b9c71af30 /mm/userfaultfd.c
parent8d73829b78ca1a0e6eb93380f3bf5193d58c281c (diff)
parent7f830e126dc357fc086905ce9730140fd4528d66 (diff)
Merge branch 'x86/urgent' into x86/apic, to resolve conflict
Conflicts: arch/x86/include/asm/sev.h Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/userfaultfd.c')
-rw-r--r--mm/userfaultfd.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
index 45e6290e2e8b..aefdf3a812a1 100644
--- a/mm/userfaultfd.c
+++ b/mm/userfaultfd.c
@@ -1453,10 +1453,15 @@ out:
folio_unlock(src_folio);
folio_put(src_folio);
}
- if (dst_pte)
- pte_unmap(dst_pte);
+ /*
+ * Unmap in reverse order (LIFO) to maintain proper kmap_local
+ * index ordering when CONFIG_HIGHPTE is enabled. We mapped dst_pte
+ * first, then src_pte, so we must unmap src_pte first, then dst_pte.
+ */
if (src_pte)
pte_unmap(src_pte);
+ if (dst_pte)
+ pte_unmap(dst_pte);
mmu_notifier_invalidate_range_end(&range);
if (si)
put_swap_device(si);