aboutsummaryrefslogtreecommitdiffstats
path: root/mm/migrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/migrate.c')
-rw-r--r--mm/migrate.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/mm/migrate.c b/mm/migrate.c
index 1236449b4777..4d0be47a322a 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -2089,7 +2089,11 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm,
2089 set_page_owner_migrate_reason(new_page, MR_NUMA_MISPLACED); 2089 set_page_owner_migrate_reason(new_page, MR_NUMA_MISPLACED);
2090 2090
2091 spin_unlock(ptl); 2091 spin_unlock(ptl);
2092 mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end); 2092 /*
2093 * No need to double call mmu_notifier->invalidate_range() callback as
2094 * the above pmdp_huge_clear_flush_notify() did already call it.
2095 */
2096 mmu_notifier_invalidate_range_only_end(mm, mmun_start, mmun_end);
2093 2097
2094 /* Take an "isolate" reference and put new page on the LRU. */ 2098 /* Take an "isolate" reference and put new page on the LRU. */
2095 get_page(new_page); 2099 get_page(new_page);
@@ -2805,9 +2809,14 @@ static void migrate_vma_pages(struct migrate_vma *migrate)
2805 migrate->src[i] &= ~MIGRATE_PFN_MIGRATE; 2809 migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
2806 } 2810 }
2807 2811
2812 /*
2813 * No need to double call mmu_notifier->invalidate_range() callback as
2814 * the above ptep_clear_flush_notify() inside migrate_vma_insert_page()
2815 * did already call it.
2816 */
2808 if (notified) 2817 if (notified)
2809 mmu_notifier_invalidate_range_end(mm, mmu_start, 2818 mmu_notifier_invalidate_range_only_end(mm, mmu_start,
2810 migrate->end); 2819 migrate->end);
2811} 2820}
2812 2821
2813/* 2822/*