aboutsummaryrefslogtreecommitdiffstats
path: root/mm/mempolicy.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/mempolicy.c')
-rw-r--r--mm/mempolicy.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 27d135408a22..4c4187c0e1de 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -548,8 +548,7 @@ retry:
548 goto retry; 548 goto retry;
549 } 549 }
550 550
551 if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) 551 migrate_page_add(page, qp->pagelist, flags);
552 migrate_page_add(page, qp->pagelist, flags);
553 } 552 }
554 pte_unmap_unlock(pte - 1, ptl); 553 pte_unmap_unlock(pte - 1, ptl);
555 cond_resched(); 554 cond_resched();
@@ -625,7 +624,7 @@ static int queue_pages_test_walk(unsigned long start, unsigned long end,
625 unsigned long endvma = vma->vm_end; 624 unsigned long endvma = vma->vm_end;
626 unsigned long flags = qp->flags; 625 unsigned long flags = qp->flags;
627 626
628 if (vma->vm_flags & VM_PFNMAP) 627 if (!vma_migratable(vma))
629 return 1; 628 return 1;
630 629
631 if (endvma > end) 630 if (endvma > end)
@@ -644,16 +643,13 @@ static int queue_pages_test_walk(unsigned long start, unsigned long end,
644 643
645 if (flags & MPOL_MF_LAZY) { 644 if (flags & MPOL_MF_LAZY) {
646 /* Similar to task_numa_work, skip inaccessible VMAs */ 645 /* Similar to task_numa_work, skip inaccessible VMAs */
647 if (vma_migratable(vma) && 646 if (vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))
648 vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))
649 change_prot_numa(vma, start, endvma); 647 change_prot_numa(vma, start, endvma);
650 return 1; 648 return 1;
651 } 649 }
652 650
653 if ((flags & MPOL_MF_STRICT) || 651 /* queue pages from current vma */
654 ((flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) && 652 if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
655 vma_migratable(vma)))
656 /* queue pages from current vma */
657 return 0; 653 return 0;
658 return 1; 654 return 1;
659} 655}