lkml.org 
[lkml]   [2022]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/core] exit: Mark do_group_exit() __noreturn
    The following commit has been merged into the x86/core branch of tip:

    Commit-ID: fb604370c4b1c1c17fa9c3f0d60bbe8c9494edd9
    Gitweb: https://git.kernel.org/tip/fb604370c4b1c1c17fa9c3f0d60bbe8c9494edd9
    Author: Peter Zijlstra <peterz@infradead.org>
    AuthorDate: Tue, 08 Mar 2022 16:30:48 +01:00
    Committer: Peter Zijlstra <peterz@infradead.org>
    CommitterDate: Tue, 08 Mar 2022 23:53:37 +01:00

    exit: Mark do_group_exit() __noreturn

    vmlinux.o: warning: objtool: get_signal()+0x108: unreachable instruction

    0000 000000000007f930 <get_signal>:
    ...
    0103 7fa33: e8 00 00 00 00 call 7fa38 <get_signal+0x108> 7fa34: R_X86_64_PLT32 do_group_exit-0x4
    0108 7fa38: 41 8b 45 74 mov 0x74(%r13),%eax

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Link: https://lore.kernel.org/r/20220308154319.351270711@infradead.org
    ---
    include/linux/sched/task.h | 2 +-
    kernel/exit.c | 2 +-
    tools/objtool/check.c | 1 +
    3 files changed, 3 insertions(+), 2 deletions(-)

    diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h
    index e84e54d..719c9a6 100644
    --- a/include/linux/sched/task.h
    +++ b/include/linux/sched/task.h
    @@ -79,7 +79,7 @@ static inline void exit_thread(struct task_struct *tsk)
    {
    }
    #endif
    -extern void do_group_exit(int);
    +extern __noreturn void do_group_exit(int);

    extern void exit_files(struct task_struct *);
    extern void exit_itimers(struct signal_struct *);
    diff --git a/kernel/exit.c b/kernel/exit.c
    index b00a25b..b71f9df 100644
    --- a/kernel/exit.c
    +++ b/kernel/exit.c
    @@ -906,7 +906,7 @@ SYSCALL_DEFINE1(exit, int, error_code)
    * Take down every thread in the group. This is called by fatal signals
    * as well as by sys_exit_group (below).
    */
    -void
    +void __noreturn
    do_group_exit(int exit_code)
    {
    struct signal_struct *sig = current->signal;
    diff --git a/tools/objtool/check.c b/tools/objtool/check.c
    index c3ddcec..9896562 100644
    --- a/tools/objtool/check.c
    +++ b/tools/objtool/check.c
    @@ -181,6 +181,7 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func,
    "kunit_try_catch_throw",
    "xen_start_kernel",
    "cpu_bringup_and_idle",
    + "do_group_exit",
    "stop_this_cpu",
    };

    \
     
     \ /
      Last update: 2022-03-09 08:56    [W:2.382 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site