on 2010-5-12 9:49, Andrew Morton wrote: ... >> --- a/kernel/exit.c >> +++ b/kernel/exit.c >> @@ -16,6 +16,7 @@ >> #include <linux/key.h> >> #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. > Also, why was the inclusion of cpuset.h added? Nothing which this > patch adds appears to need it? > This is my mistake, I will make patch to cleanup it. Thanks! Miao -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>