Re: [PATCH 2/2] cpuset,mm: fix no node to alloc memory when changing cpuset's mems

Andrew Morton
2010-05-12T06:24:00Z

On Wed, 12 May 2010 14:16:42 +0800 Miao Xie <miaox@cn.fujitsu.com> wrote:

> >> #include <linux/security.h>
> >> #include <linux/cpu.h>
> >> +#include <linux/cpuset.h>
> >> #include <linux/acct.h>
> >> #include <linux/tsacct_kern.h>
> >> #include <linux/file.h>
> >> @@ -1003,8 +1004,10 @@ NORET_TYPE void do_exit(long code)
> >>
> >> exit_notify(tsk, group_dead);
> >> #ifdef CONFIG_NUMA
> >> + task_lock(tsk);
> >> mpol_put(tsk->mempolicy);
> >> tsk->mempolicy = NULL;
> >> + task_unlock(tsk);
> >> #endif
> >> #ifdef CONFIG_FUTEX
> >> if (unlikely(current->pi_state_cache))
> >
> > Given that this function is already holding task_lock(tsk), this
> > didn't work very well.
>
> Sorry for replying late.
>
> Thanks for your patch that removes task_lock(tsk).
>
> I made this patch against the mainline tree, and do_exit() in the mainline tree
> doesn't hold task_lock(tsk), so I took task_lock(tsk). But I didn't take notice
> that do_exit() in the mmotm tree had been changed, and I made this mistake.

Ah, hang on. Yes, I had to manually fix that a lot of times. The code
you were patching has moved from do_exit() over to exit_mm(). AFACIT
my change is still OK though. Please carefully review latest -mm?