From f1e838e041a05fbee30f060d1373c8ccb09074bb Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Thu, 6 Nov 2008 12:53:30 -0800 Subject: [PATCH] --- yaml --- r: 118436 b: refs/heads/master c: 0aedadf91a70a11c4a3e7c7d99b21e5528af8d5d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/mempolicy.c | 18 +++++++++++------- trunk/mm/migrate.c | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index f869b9637bfe..3567b1caf10b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 17a1217e12d8c8434f8a3deef7bf980c724a6ac7 +refs/heads/master: 0aedadf91a70a11c4a3e7c7d99b21e5528af8d5d diff --git a/trunk/mm/mempolicy.c b/trunk/mm/mempolicy.c index 36f42573a335..e9493b1c1117 100644 --- a/trunk/mm/mempolicy.c +++ b/trunk/mm/mempolicy.c @@ -489,12 +489,6 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end, int err; struct vm_area_struct *first, *vma, *prev; - if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { - - err = migrate_prep(); - if (err) - return ERR_PTR(err); - } first = find_vma(mm, start); if (!first) @@ -809,9 +803,13 @@ int do_migrate_pages(struct mm_struct *mm, const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags) { int busy = 0; - int err = 0; + int err; nodemask_t tmp; + err = migrate_prep(); + if (err) + return err; + down_read(&mm->mmap_sem); err = migrate_vmas(mm, from_nodes, to_nodes, flags); @@ -974,6 +972,12 @@ static long do_mbind(unsigned long start, unsigned long len, start, start + len, mode, mode_flags, nmask ? nodes_addr(*nmask)[0] : -1); + if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) { + + err = migrate_prep(); + if (err) + return err; + } down_write(&mm->mmap_sem); vma = check_range(mm, start, end, nmask, flags | MPOL_MF_INVERT, &pagelist); diff --git a/trunk/mm/migrate.c b/trunk/mm/migrate.c index 6602941bfab0..385db89f0c33 100644 --- a/trunk/mm/migrate.c +++ b/trunk/mm/migrate.c @@ -841,12 +841,12 @@ static int do_move_page_to_node_array(struct mm_struct *mm, struct page_to_node *pp; LIST_HEAD(pagelist); + migrate_prep(); down_read(&mm->mmap_sem); /* * Build a list of pages to migrate */ - migrate_prep(); for (pp = pm; pp->node != MAX_NUMNODES; pp++) { struct vm_area_struct *vma; struct page *page;