lkml.org 
[lkml]   [2021]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 263/279] signal/x86: In emulate_vsyscall force a signal instead of calling do_exit
    Date
    From: Eric W. Biederman <ebiederm@xmission.com>

    commit 695dd0d634df8903e5ead8aa08d326f63b23368a upstream.

    Directly calling do_exit with a signal number has the problem that
    all of the side effects of the signal don't happen, such as
    killing all of the threads of a process instead of just the
    calling thread.

    So replace do_exit(SIGSYS) with force_fatal_sig(SIGSYS) which
    causes the signal handling to take it's normal path and work
    as expected.

    Cc: Andy Lutomirski <luto@kernel.org>
    Link: https://lkml.kernel.org/r/20211020174406.17889-17-ebiederm@xmission.com
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Thomas Backlund <tmb@iki.fi>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/entry/vsyscall/vsyscall_64.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/arch/x86/entry/vsyscall/vsyscall_64.c
    +++ b/arch/x86/entry/vsyscall/vsyscall_64.c
    @@ -226,7 +226,8 @@ bool emulate_vsyscall(unsigned long erro
    if ((!tmp && regs->orig_ax != syscall_nr) || regs->ip != address) {
    warn_bad_vsyscall(KERN_DEBUG, regs,
    "seccomp tried to change syscall nr or ip");
    - do_exit(SIGSYS);
    + force_fatal_sig(SIGSYS);
    + return true;
    }
    regs->orig_ax = -1;
    if (tmp)

    \
     
     \ /
      Last update: 2021-11-24 15:08    [W:3.756 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site