diff options
Diffstat (limited to 'mm/migrate.c')
-rw-r--r-- | mm/migrate.c | 15 |
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 | /* |