aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2012-03-11 11:59:33 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-03-11 11:59:29 -0400
commitad252ffa2a0fbb1f37e81688322034b3af037cee (patch)
tree5adf49c487acce304549ecec7d987fcd30e6a37e /arch/s390
parent3ab121ab18669226742891416fe7ecc86dadb047 (diff)
[S390] Use block_sigmask()
Use the new helper function introduced in commit 5e6292c0f28f ("signal: add block_sigmask() for adding sigmask to current->blocked") which centralises the code for updating current->blocked after successfully delivering a signal and reduces the amount of duplicate code across architectures. In the past some architectures got this code wrong, so using this helper function should stop that from happening again. Cc: Oleg Nesterov <oleg@redhat.com> Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: linux-s390@vger.kernel.org Signed-off-by: Matt Fleming <matt.fleming@intel.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/kernel/compat_signal.c6
-rw-r--r--arch/s390/kernel/signal.c6
2 files changed, 2 insertions, 10 deletions
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 6fe78c2f95d..53a82c8d50e 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -581,7 +581,6 @@ give_sigsegv:
581int handle_signal32(unsigned long sig, struct k_sigaction *ka, 581int handle_signal32(unsigned long sig, struct k_sigaction *ka,
582 siginfo_t *info, sigset_t *oldset, struct pt_regs *regs) 582 siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)
583{ 583{
584 sigset_t blocked;
585 int ret; 584 int ret;
586 585
587 /* Set up the stack frame */ 586 /* Set up the stack frame */
@@ -591,10 +590,7 @@ int handle_signal32(unsigned long sig, struct k_sigaction *ka,
591 ret = setup_frame32(sig, ka, oldset, regs); 590 ret = setup_frame32(sig, ka, oldset, regs);
592 if (ret) 591 if (ret)
593 return ret; 592 return ret;
594 sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask); 593 block_sigmask(ka, sig);
595 if (!(ka->sa.sa_flags & SA_NODEFER))
596 sigaddset(&blocked, sig);
597 set_current_blocked(&blocked);
598 return 0; 594 return 0;
599} 595}
600 596
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 2d421d90fad..f29f5ef400e 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -384,7 +384,6 @@ static int handle_signal(unsigned long sig, struct k_sigaction *ka,
384 siginfo_t *info, sigset_t *oldset, 384 siginfo_t *info, sigset_t *oldset,
385 struct pt_regs *regs) 385 struct pt_regs *regs)
386{ 386{
387 sigset_t blocked;
388 int ret; 387 int ret;
389 388
390 /* Set up the stack frame */ 389 /* Set up the stack frame */
@@ -394,10 +393,7 @@ static int handle_signal(unsigned long sig, struct k_sigaction *ka,
394 ret = setup_frame(sig, ka, oldset, regs); 393 ret = setup_frame(sig, ka, oldset, regs);
395 if (ret) 394 if (ret)
396 return ret; 395 return ret;
397 sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask); 396 block_sigmask(ka, sig);
398 if (!(ka->sa.sa_flags & SA_NODEFER))
399 sigaddset(&blocked, sig);
400 set_current_blocked(&blocked);
401 return 0; 397 return 0;
402} 398}
403 399