When I looked at zone stat mismatch problem, I found migrate_to_node doesn't decrease NR_ISOLATED_[ANON|FILE] if check_range fails. It can make system hang out. Cc: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Christoph Lameter <cl@xxxxxxxxx> Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> --- mm/mempolicy.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 3d64b36..6bf0860 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -953,16 +953,16 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest, vma = check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask, flags | MPOL_MF_DISCONTIG_OK, &pagelist); - if (IS_ERR(vma)) - return PTR_ERR(vma); - - if (!list_empty(&pagelist)) { + if (IS_ERR(vma)) { + err = PTR_ERR(vma); + goto out; + } + if (!list_empty(&pagelist)) err = migrate_pages(&pagelist, new_node_page, dest, false, MIGRATE_SYNC); - if (err) - putback_lru_pages(&pagelist); - } - +out: + if (err) + putback_lru_pages(&pagelist); return err; } -- 1.7.9.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>