diff options
Diffstat (limited to 'mm/mempolicy.c')
-rw-r--r-- | mm/mempolicy.c | 14 |
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 | } |