diff options
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 8677dbf31c2e..914216733e0a 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c | |||
@@ -1282,7 +1282,7 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
1282 | struct page *page; | 1282 | struct page *page; |
1283 | unsigned long haddr = addr & HPAGE_PMD_MASK; | 1283 | unsigned long haddr = addr & HPAGE_PMD_MASK; |
1284 | int page_nid = -1, this_nid = numa_node_id(); | 1284 | int page_nid = -1, this_nid = numa_node_id(); |
1285 | int target_nid; | 1285 | int target_nid, last_nid = -1; |
1286 | bool page_locked; | 1286 | bool page_locked; |
1287 | bool migrated = false; | 1287 | bool migrated = false; |
1288 | 1288 | ||
@@ -1293,6 +1293,7 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
1293 | page = pmd_page(pmd); | 1293 | page = pmd_page(pmd); |
1294 | BUG_ON(is_huge_zero_page(page)); | 1294 | BUG_ON(is_huge_zero_page(page)); |
1295 | page_nid = page_to_nid(page); | 1295 | page_nid = page_to_nid(page); |
1296 | last_nid = page_nid_last(page); | ||
1296 | count_vm_numa_event(NUMA_HINT_FAULTS); | 1297 | count_vm_numa_event(NUMA_HINT_FAULTS); |
1297 | if (page_nid == this_nid) | 1298 | if (page_nid == this_nid) |
1298 | count_vm_numa_event(NUMA_HINT_FAULTS_LOCAL); | 1299 | count_vm_numa_event(NUMA_HINT_FAULTS_LOCAL); |
@@ -1361,7 +1362,7 @@ out: | |||
1361 | page_unlock_anon_vma_read(anon_vma); | 1362 | page_unlock_anon_vma_read(anon_vma); |
1362 | 1363 | ||
1363 | if (page_nid != -1) | 1364 | if (page_nid != -1) |
1364 | task_numa_fault(page_nid, HPAGE_PMD_NR, migrated); | 1365 | task_numa_fault(last_nid, page_nid, HPAGE_PMD_NR, migrated); |
1365 | 1366 | ||
1366 | return 0; | 1367 | return 0; |
1367 | } | 1368 | } |