Skip to content
  • Oleg Nesterov's avatar
    kthread: Don't use to_live_kthread() in kthread_stop() · efb29fbf
    Oleg Nesterov authored
    
    
    kthread_stop() had to use to_live_kthread() simply because it was not
    possible to access kthread->exited after the exiting task clears
    task_struct->vfork_done. Now that to_kthread() is always valid,
    wake_up_process() + wait_for_completion() can be done
    ununconditionally. It's not an issue anymore if the task has already issued
    complete_vfork_done() or died.
    
    The exiting task can get the spurious wakeup after mm_release() but this is
    possible without this change too and is fine; do_task_dead() ensures that
    this can't make any harm.
    
    As a further enhancement this could be converted to task_work_add() later,
    so ->vfork_done can be avoided completely.
    
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Chunming Zhou <David1.Zhou@amd.com>
    Cc: Roman Pen <roman.penyaev@profitbricks.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20161129175103.GA5336@redhat.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    efb29fbf