On Tue 17-04-18 19:06:15, Li Wang wrote: [...] > diff --git a/mm/migrate.c b/mm/migrate.c > index f65dd69..2b315fc 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1608,7 +1608,7 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, > continue; > > err = store_status(status, i, err, 1); > - if (err) > + if (!err) > goto out_flush; This change just doesn't make any sense to me. Why should we bail out if the store_status is successul? I am trying to wrap my head around the test case. 6b9d757ecafc ("mm, numa: rework do_pages_move") tried to explain that move_pages has some semantic issues and the new implementation might be not 100% replacement. Anyway I am studying the test case to come up with a proper fix. > > err = do_move_pages_to_node(mm, &pagelist, current_node); > -- > 2.9.5 > -- Michal Hocko SUSE Labs