Skip to content
  • Oleg Nesterov's avatar
    call_usermodehelper: simplify/fix UMH_NO_WAIT case · d47419cd
    Oleg Nesterov authored
    
    
    __call_usermodehelper(UMH_NO_WAIT) has 2 problems:
    
    	- if kernel_thread() fails, call_usermodehelper_freeinfo()
    	  is not called.
    
    	- for unknown reason UMH_NO_WAIT has UMH_WAIT_PROC logic,
    	  we spawn yet another thread which waits until the user
    	  mode application exits.
    
    Change the UMH_NO_WAIT code to use ____call_usermodehelper() instead of
    wait_for_helper(), and do call_usermodehelper_freeinfo() unconditionally.
    We can rely on CLONE_VFORK, do_fork(CLONE_VFORK) until the child exits or
    execs.
    
    With or without this patch UMH_NO_WAIT does not report the error if
    kernel_thread() fails, this is correct since the caller doesn't wait for
    result.
    
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d47419cd