diff options
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/mempolicy.c | 18 | ||||
| -rw-r--r-- | mm/migrate.c | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 36f42573a335..e9493b1c1117 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
| @@ -489,12 +489,6 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end, | |||
| 489 | int err; | 489 | int err; |
| 490 | struct vm_area_struct *first, *vma, *prev; | 490 | struct vm_area_struct *first, *vma, *prev; |
| 491 | 491 | ||
| 492 | if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { | ||
| 493 | |||
| 494 | err = migrate_prep(); | ||
| 495 | if (err) | ||
| 496 | return ERR_PTR(err); | ||
| 497 | } | ||
| 498 | 492 | ||
| 499 | first = find_vma(mm, start); | 493 | first = find_vma(mm, start); |
| 500 | if (!first) | 494 | if (!first) |
| @@ -809,9 +803,13 @@ int do_migrate_pages(struct mm_struct *mm, | |||
| 809 | const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags) | 803 | const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags) |
| 810 | { | 804 | { |
| 811 | int busy = 0; | 805 | int busy = 0; |
| 812 | int err = 0; | 806 | int err; |
| 813 | nodemask_t tmp; | 807 | nodemask_t tmp; |
| 814 | 808 | ||
| 809 | err = migrate_prep(); | ||
| 810 | if (err) | ||
| 811 | return err; | ||
| 812 | |||
| 815 | down_read(&mm->mmap_sem); | 813 | down_read(&mm->mmap_sem); |
| 816 | 814 | ||
| 817 | err = migrate_vmas(mm, from_nodes, to_nodes, flags); | 815 | err = migrate_vmas(mm, from_nodes, to_nodes, flags); |
| @@ -974,6 +972,12 @@ static long do_mbind(unsigned long start, unsigned long len, | |||
| 974 | start, start + len, mode, mode_flags, | 972 | start, start + len, mode, mode_flags, |
| 975 | nmask ? nodes_addr(*nmask)[0] : -1); | 973 | nmask ? nodes_addr(*nmask)[0] : -1); |
| 976 | 974 | ||
| 975 | if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { | ||
| 976 | |||
| 977 | err = migrate_prep(); | ||
| 978 | if (err) | ||
| 979 | return err; | ||
| 980 | } | ||
| 977 | down_write(&mm->mmap_sem); | 981 | down_write(&mm->mmap_sem); |
| 978 | vma = check_range(mm, start, end, nmask, | 982 | vma = check_range(mm, start, end, nmask, |
| 979 | flags | MPOL_MF_INVERT, &pagelist); | 983 | flags | MPOL_MF_INVERT, &pagelist); |
diff --git a/mm/migrate.c b/mm/migrate.c index 6602941bfab0..385db89f0c33 100644 --- a/mm/migrate.c +++ b/mm/migrate.c | |||
| @@ -841,12 +841,12 @@ static int do_move_page_to_node_array(struct mm_struct *mm, | |||
| 841 | struct page_to_node *pp; | 841 | struct page_to_node *pp; |
| 842 | LIST_HEAD(pagelist); | 842 | LIST_HEAD(pagelist); |
| 843 | 843 | ||
| 844 | migrate_prep(); | ||
| 844 | down_read(&mm->mmap_sem); | 845 | down_read(&mm->mmap_sem); |
| 845 | 846 | ||
| 846 | /* | 847 | /* |
| 847 | * Build a list of pages to migrate | 848 | * Build a list of pages to migrate |
| 848 | */ | 849 | */ |
| 849 | migrate_prep(); | ||
| 850 | for (pp = pm; pp->node != MAX_NUMNODES; pp++) { | 850 | for (pp = pm; pp->node != MAX_NUMNODES; pp++) { |
| 851 | struct vm_area_struct *vma; | 851 | struct vm_area_struct *vma; |
| 852 | struct page *page; | 852 | struct page *page; |
