diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-05-23 15:28:58 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-06-01 12:58:50 -0400 |
commit | 6fd84c0831ec78d98736b76dc5e9b849f1dbfc9e (patch) | |
tree | d3d95e7a66f6edcd29cfc4f2ff01aec8422b5a88 /arch/parisc/kernel | |
parent | bf343dfd877ebf16cfbc31ba121606c5b6cef01f (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.S | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/signal.c | 3 |
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 |
2033 | syscall_check_sig: | 2033 | syscall_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 | ||
614 | void do_notify_resume(struct pt_regs *regs, long in_syscall) | 614 | void 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)) { |