26.05.2015, 22:47, "Oleg Nesterov" <o...@redhat.com>: > On 05/25, Kirill Tkhai wrote: >> Refactoring, no functionality change. > > Hmm. unless I missed something this change is wrong. > >> --- a/kernel/exit.c >> +++ b/kernel/exit.c >> @@ -1538,8 +1538,7 @@ static long do_wait(struct wait_opts *wo) >> >> set_current_state(TASK_INTERRUPTIBLE); >> read_lock(&tasklist_lock); >> - tsk = current; >> - do { >> + for_each_thread(current, tsk) { >> retval = do_wait_thread(wo, tsk); >> if (retval) >> goto end; >> @@ -1550,7 +1549,7 @@ static long do_wait(struct wait_opts *wo) >> >> if (wo->wo_flags & __WNOTHREAD) >> break; >> - } while_each_thread(current, tsk); >> + } > > Please note the __WNOTHREAD check. This is the rare case when we > actually want while_each_thread() (although it should die anyway). > > for_each_thread() always starts from ->group_leader, but we need > to start from "current" first.
Sure, this must be like below. Thanks! I won't resend the whole series with only this one patch changed to do not bomb mail boxes. Waiting for the review. diff --git a/kernel/exit.c b/kernel/exit.c index a268093..e4963d3 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -1538,8 +1538,10 @@ static long do_wait(struct wait_opts *wo) set_current_state(TASK_INTERRUPTIBLE); read_lock(&tasklist_lock); - tsk = current; - do { + for_each_thread(current, tsk) { + if (wo->wo_flags & __WNOTHREAD) + tsk = current; + retval = do_wait_thread(wo, tsk); if (retval) goto end; @@ -1550,7 +1552,7 @@ static long do_wait(struct wait_opts *wo) if (wo->wo_flags & __WNOTHREAD) break; - } while_each_thread(current, tsk); + } read_unlock(&tasklist_lock); notask: -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/