On Mon, 31 Oct 2016, Oleg Nesterov wrote:
> kthread_stop() had to use to_live_kthread() simply because it was not > possible to access kthread->exited after the exiting kthread clears > task_struct->vfork_done. Now that to_kthread() is always valid we can > do wake_up_process() + wait_for_completion() unconditionally, we don't > care if it has already passed complete_vfork_done() or even dead. > > The exiting kthread can get the spurious wakeup after mm_release() but > this is possible without this change too and this is fine, do_task_dead() > ensures that this can't make any harm. > > Note: we can even change this function to use task_work_add() and avoid > ->vfork_done altogether, probably we will do this later. > > Signed-off-by: Oleg Nesterov <[email protected]> Reviewed-by: Thomas Gleixner <[email protected]>

