lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 145/849] signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT
    Date
    From: Eric W. Biederman <ebiederm@xmission.com>

    commit 95bf9d646c3c3f95cb0be7e703b371db8da5be68 upstream.

    When an instruction to save or restore a register from the stack fails
    in _save_fp_context or _restore_fp_context return with -EFAULT. This
    change was made to r2300_fpu.S[1] but it looks like it got lost with
    the introduction of EX2[2]. This is also what the other implementation
    of _save_fp_context and _restore_fp_context in r4k_fpu.S does, and
    what is needed for the callers to be able to handle the error.

    Furthermore calling do_exit(SIGSEGV) from bad_stack is wrong because
    it does not terminate the entire process it just terminates a single
    thread.

    As the changed code was the only caller of arch/mips/kernel/syscall.c:bad_stack
    remove the problematic and now unused helper function.

    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Maciej Rozycki <macro@orcam.me.uk>
    Cc: linux-mips@vger.kernel.org
    [1] 35938a00ba86 ("MIPS: Fix ISA I FP sigcontext access violation handling")
    [2] f92722dc4545 ("MIPS: Correct MIPS I FP sigcontext layout")
    Cc: stable@vger.kernel.org
    Fixes: f92722dc4545 ("MIPS: Correct MIPS I FP sigcontext layout")
    Acked-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Link: https://lkml.kernel.org/r/20211020174406.17889-5-ebiederm@xmission.com
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/mips/kernel/r2300_fpu.S | 4 ++--
    arch/mips/kernel/syscall.c | 9 ---------
    2 files changed, 2 insertions(+), 11 deletions(-)

    --- a/arch/mips/kernel/r2300_fpu.S
    +++ b/arch/mips/kernel/r2300_fpu.S
    @@ -29,8 +29,8 @@
    #define EX2(a,b) \
    9: a,##b; \
    .section __ex_table,"a"; \
    - PTR 9b,bad_stack; \
    - PTR 9b+4,bad_stack; \
    + PTR 9b,fault; \
    + PTR 9b+4,fault; \
    .previous

    .set mips1
    --- a/arch/mips/kernel/syscall.c
    +++ b/arch/mips/kernel/syscall.c
    @@ -240,12 +240,3 @@ SYSCALL_DEFINE3(cachectl, char *, addr,
    {
    return -ENOSYS;
    }
    -
    -/*
    - * If we ever come here the user sp is bad. Zap the process right away.
    - * Due to the bad stack signaling wouldn't work.
    - */
    -asmlinkage void bad_stack(void)
    -{
    - do_exit(SIGSEGV);
    -}

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