diff mbox series

[19/29] mm: implement speculative handling in do_numa_page()

Message ID 20210430195232.30491-20-michel@lespinasse.org (mailing list archive)
State New
Headers show
Series [01/29] mm: export dump_mm | expand

Commit Message

Michel Lespinasse April 30, 2021, 7:52 p.m. UTC
change do_numa_page() to use pte_spinlock() when locking the page table,
so that the mmap sequence counter will be validated in the speculative case.

Signed-off-by: Michel Lespinasse <michel@lespinasse.org>
---
 mm/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/mm/memory.c b/mm/memory.c
index eceb1b6e904c..a2230269e034 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4198,8 +4198,8 @@  static vm_fault_t do_numa_page(struct vm_fault *vmf)
 	 * validation through pte_unmap_same(). It's of NUMA type but
 	 * the pfn may be screwed if the read is non atomic.
 	 */
-	vmf->ptl = pte_lockptr(vma->vm_mm, vmf->pmd);
-	spin_lock(vmf->ptl);
+	if (!pte_spinlock(vmf))
+		return VM_FAULT_RETRY;
 	if (unlikely(!pte_same(*vmf->pte, vmf->orig_pte))) {
 		pte_unmap_unlock(vmf->pte, vmf->ptl);
 		goto out;