• Eric W. Biederman's avatar
    s390/exit: remove dead reference to do_exit from copy_thread · 893d4d9c
    Eric W. Biederman authored
    My s390 assembly is not particularly good so I have read the history
    of the reference to do_exit copy_thread and have been able to
    verify that do_exit is not used.
    
    The general argument is that s390 has been changed to use the generic
    kernel_thread and kernel_execve and the generic versions do not call
    do_exit.  So it is strange to see a do_exit reference sitting there.
    
    The history of the do_exit reference in s390's version of copy_thread
    seems conclusive that the do_exit reference is something that lingers
    and should have been removed several years ago.
    
    Up through 8d19f15a ("[PATCH] s390 update (1/27): arch.")  the
    s390 code made a call to the exit(2) system call when a kernel thread
    finished.  Then kernel_thread_starter was added which branched
    directly to the value in register 11 when the kernel thread finshed.
    The value in register 11 was set in kernel_thread to
    "regs.gprs[11] = (unsigned long) do_exit"
    
    In commit 37fe5d41 ("s390: fold kernel_thread_helper() into
    ret_from_fork()") kernel_thread_starter was moved into entry.S and
    entry64.S unchanged (except for the syntax differences between inline
    assemly and in the assembly file).
    
    In commit f9a7e025 ("s390: switch to generic kernel_thread()") the
    assignment to "gprs[11]" was moved into copy_thread from the old
    kernel_thread.  The helper kernel_thread_starter was still being used
    and was still branching to "%r11" at the end.
    
    In commit 30dcb099 ("s390: switch to saner kernel_execve()
    semantics") kernel_thread_starter was changed to unconditionally
    branch to sysc_tracenogo instead to %r11 which held the value of
    do_exit.  Unfortunately copy_thread was not updated to stop passing
    do_exit in "gprs[11]".
    
    In commit 56e62a73 ("s390: convert to generic entry")
    kernel_thread_starter was replaced by __ret_from_fork.  And the code
    still continued to pass do_exit in "gprs[11]" despite __ret_from_fork
    not caring in the slightest.
    
    Remove this dead reference to do_exit to make it clear that s390 is
    not doing anything with do_exit in copy_thread.
    
    History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Alexander Gordeev <agordeev@linux.ibm.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: 30dcb099 ("s390: switch to saner kernel_execve() semantics")
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Link: https://lore.kernel.org/r/20211208202532.16409-1-ebiederm@xmission.comSigned-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    893d4d9c
process.c 5.82 KB