[PATCH] s390: signal delivery
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 7 Nov 2005 08:59:02 +0000 (00:59 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 7 Nov 2005 15:53:32 +0000 (07:53 -0800)
Always create all signal frames for pending signals before returning to
userspace, not just a single one.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/s390/kernel/entry.S
arch/s390/kernel/entry64.S

index 9b30f4cf32c4736806791f0904231705f1fc9353..27b07730b7b8d172f4330aaea690f53e82152628 100644 (file)
@@ -288,7 +288,7 @@ sysc_sigpending:
        bo      BASED(sysc_restart)
        tm      __TI_flags+3(%r9),_TIF_SINGLE_STEP
        bo      BASED(sysc_singlestep)
-       b       BASED(sysc_leave)      # out of here, do NOT recheck
+       b       BASED(sysc_work_loop)
 
 #
 # _TIF_RESTART_SVC is set, set up registers and restart svc
@@ -645,7 +645,7 @@ io_sigpending:
         l       %r1,BASED(.Ldo_signal)
        basr    %r14,%r1               # call do_signal
         stnsm   __SF_EMPTY(%r15),0xfc  # disable I/O and ext. interrupts
-       b       BASED(io_leave)        # out of here, do NOT recheck
+       b       BASED(io_work_loop)
 
 /*
  * External interrupt handler routine
index 7b9b4a2ba1d7c3ee58c6b16aba372c278d52addb..4eb71ffcf484d16e985b73c821e836e040fb5e1d 100644 (file)
@@ -283,7 +283,7 @@ sysc_sigpending:
        jo      sysc_restart
        tm      __TI_flags+7(%r9),_TIF_SINGLE_STEP
        jo      sysc_singlestep
-       j       sysc_leave        # out of here, do NOT recheck
+       j       sysc_work_loop
 
 #
 # _TIF_RESTART_SVC is set, set up registers and restart svc
@@ -684,7 +684,7 @@ io_sigpending:
        slgr    %r3,%r3                 # clear *oldset
        brasl   %r14,do_signal          # call do_signal
        stnsm   __SF_EMPTY(%r15),0xfc   # disable I/O and ext. interrupts
-       j       sysc_leave              # out of here, do NOT recheck
+       j       io_work_loop
 
 /*
  * External interrupt handler routine