diff options
Diffstat (limited to 'mm/mempolicy.c')
| -rw-r--r-- | mm/mempolicy.c | 18 |
1 files changed, 11 insertions, 7 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); |
