• Eric W. Biederman's avatar
    [PATCH] exec: allow init to exec from any thread. · fef23e7f
    Eric W. Biederman authored
    After looking at the problem of init calling exec some more I figured out
    an easy way to make the code work.
    
    The actual symptom without out this patch is that all threads will die
    except pid == 1, and the thread calling exec.  The thread calling exec will
    wait forever for pid == 1 to die.
    
    Since pid == 1 does not install a handler for SIGKILL it will never die.
    
    This modifies the tests for init from current->pid == 1 to the equivalent
    current == child_reaper.  And then it causes exec in the ugly case to
    modify child_reaper.
    
    The only weird symptom is that you wind up with an init process that
    doesn't have the oldest start time on the box.
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    fef23e7f
exec.c 34.8 KB