Oleg Nesterov <[EMAIL PROTECTED]> writes: > On 04/10, Eric W. Biederman wrote: >> >> static int kthread(void *_create) >> { >> struct kthread_create_info *create = _create; >> int (*threadfn)(void *data); >> void *data; >> - sigset_t blocked; >> int ret = -EINTR; >> >> - kthread_exit_files(); >> - >> - /* Copy data: it's on keventd's stack */ >> + /* Copy data: it's on kthread's stack */ >> threadfn = create->threadfn; >> data = create->data; >> >> - /* Block and flush all signals (in case we're not from keventd). */ >> - sigfillset(&blocked); >> - sigprocmask(SIG_BLOCK, &blocked, NULL); >> - flush_signals(current); >> - >> - /* By default we can run anywhere, unlike keventd. */ >> - set_cpus_allowed(current, CPU_MASK_ALL); > > The above is OK, but I believe you should add set_cpus_allowed() to > kthreadd_setup(). Note that kthreadd() is forked after init_idle().
init_idle()? Yep in sched_init. I wondered where that happened for the initial idle thread. Ugh. That is the first thing that we fix after we fork init as well. So yes it would be a good idea to fix that... I was expecting init_idle() to happen after we forked kthreadd. I almost wonder if I should move init_idle.... Anyway that is one bug caught. Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/