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.

Oleg.

--
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/

Reply via email to