lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 332/389] nios2: fix syscall restart checks
    Date
    From: Al Viro <viro@zeniv.linux.org.uk>

    commit 2d631bd58fe0ea3e3350212e23c9aba1fb606514 upstream.

    sys_foo() returns -512 (aka -ERESTARTSYS) => do_signal() sees
    512 in r2 and 1 in r1.

    sys_foo() returns 512 => do_signal() sees 512 in r2 and 0 in r1.

    The former is restart-worthy; the latter obviously isn't.

    Fixes: b53e906d255d ("nios2: Signal handling support")
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/nios2/kernel/signal.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/nios2/kernel/signal.c
    +++ b/arch/nios2/kernel/signal.c
    @@ -240,7 +240,7 @@ static int do_signal(struct pt_regs *reg
    /*
    * If we were from a system call, check for system call restarting...
    */
    - if (regs->orig_r2 >= 0) {
    + if (regs->orig_r2 >= 0 && regs->r1) {
    continue_addr = regs->ea;
    restart_addr = continue_addr - 4;
    retval = regs->r2;

    \
     
     \ /
      Last update: 2022-08-23 14:04    [W:3.903 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site