aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-05-23 15:28:58 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2012-06-01 12:58:50 -0400
commit6fd84c0831ec78d98736b76dc5e9b849f1dbfc9e (patch)
treed3d95e7a66f6edcd29cfc4f2ff01aec8422b5a88 /arch/parisc/kernel
parentbf343dfd877ebf16cfbc31ba121606c5b6cef01f (diff)
TIF_RESTORE_SIGMASK can be set only when TIF_SIGPENDING is set
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r--arch/parisc/kernel/entry.S4
-rw-r--r--arch/parisc/kernel/signal.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index c7fbc96472f3..18670a078849 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -924,7 +924,7 @@ intr_check_sig:
924 /* As above */ 924 /* As above */
925 mfctl %cr30,%r1 925 mfctl %cr30,%r1
926 LDREG TI_FLAGS(%r1),%r19 926 LDREG TI_FLAGS(%r1),%r19
927 ldi (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NOTIFY_RESUME), %r20 927 ldi (_TIF_SIGPENDING|_TIF_NOTIFY_RESUME), %r20
928 and,COND(<>) %r19, %r20, %r0 928 and,COND(<>) %r19, %r20, %r0
929 b,n intr_restore /* skip past if we've nothing to do */ 929 b,n intr_restore /* skip past if we've nothing to do */
930 930
@@ -2032,7 +2032,7 @@ syscall_check_resched:
2032 .import do_signal,code 2032 .import do_signal,code
2033syscall_check_sig: 2033syscall_check_sig:
2034 LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19 2034 LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
2035 ldi (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NOTIFY_RESUME), %r26 2035 ldi (_TIF_SIGPENDING|_TIF_NOTIFY_RESUME), %r26
2036 and,COND(<>) %r19, %r26, %r0 2036 and,COND(<>) %r19, %r26, %r0
2037 b,n syscall_restore /* skip past if we've nothing to do */ 2037 b,n syscall_restore /* skip past if we've nothing to do */
2038 2038
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c
index d6ddc572eba1..7f3c8f2c962d 100644
--- a/arch/parisc/kernel/signal.c
+++ b/arch/parisc/kernel/signal.c
@@ -613,8 +613,7 @@ do_signal(struct pt_regs *regs, long in_syscall)
613 613
614void do_notify_resume(struct pt_regs *regs, long in_syscall) 614void do_notify_resume(struct pt_regs *regs, long in_syscall)
615{ 615{
616 if (test_thread_flag(TIF_SIGPENDING) || 616 if (test_thread_flag(TIF_SIGPENDING))
617 test_thread_flag(TIF_RESTORE_SIGMASK))
618 do_signal(regs, in_syscall); 617 do_signal(regs, in_syscall);
619 618
620 if (test_thread_flag(TIF_NOTIFY_RESUME)) { 619 if (test_thread_flag(TIF_NOTIFY_RESUME)) {