sh: fix debug trap failure to process signals before return to user
authorRich Felker <dalias@libc.org>
Fri, 16 Mar 2018 00:01:36 +0000 (20:01 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:22 +0000 (07:52 +0200)
[ Upstream commit 96a598996f6ac518ac79839ecbb17c91af91f4f7 ]

When responding to a debug trap (breakpoint) in userspace, the
kernel's trap handler raised SIGTRAP but returned from the trap via a
code path that ignored pending signals, resulting in an infinite loop
re-executing the trapping instruction.

Signed-off-by: Rich Felker <dalias@libc.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/sh/kernel/entry-common.S

index c001f78..28cc612 100644 (file)
@@ -255,7 +255,7 @@ debug_trap:
        mov.l   @r8, r8
        jsr     @r8
         nop
-       bra     __restore_all
+       bra     ret_from_exception
         nop
        CFI_ENDPROC