diff options
Diffstat (limited to 'arch/arm/kernel/signal.c')
-rw-r--r-- | arch/arm/kernel/signal.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 3d1daac8ea04..2e66c93973c3 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -530,11 +530,11 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info, | |||
530 | */ | 530 | */ |
531 | static int | 531 | static int |
532 | handle_signal(unsigned long sig, struct k_sigaction *ka, | 532 | handle_signal(unsigned long sig, struct k_sigaction *ka, |
533 | siginfo_t *info, sigset_t *oldset, | 533 | siginfo_t *info, struct pt_regs *regs) |
534 | struct pt_regs * regs) | ||
535 | { | 534 | { |
536 | struct thread_info *thread = current_thread_info(); | 535 | struct thread_info *thread = current_thread_info(); |
537 | struct task_struct *tsk = current; | 536 | struct task_struct *tsk = current; |
537 | sigset_t *oldset = sigmask_to_save(); | ||
538 | int usig = sig; | 538 | int usig = sig; |
539 | int ret; | 539 | int ret; |
540 | 540 | ||
@@ -617,8 +617,6 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
617 | */ | 617 | */ |
618 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); | 618 | signr = get_signal_to_deliver(&info, &ka, regs, NULL); |
619 | if (signr > 0) { | 619 | if (signr > 0) { |
620 | sigset_t *oldset; | ||
621 | |||
622 | /* | 620 | /* |
623 | * Depending on the signal settings we may need to revert the | 621 | * Depending on the signal settings we may need to revert the |
624 | * decision to restart the system call. But skip this if a | 622 | * decision to restart the system call. But skip this if a |
@@ -635,11 +633,7 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
635 | clear_thread_flag(TIF_SYSCALL_RESTARTSYS); | 633 | clear_thread_flag(TIF_SYSCALL_RESTARTSYS); |
636 | } | 634 | } |
637 | 635 | ||
638 | if (test_thread_flag(TIF_RESTORE_SIGMASK)) | 636 | if (handle_signal(signr, &ka, &info, regs) == 0) { |
639 | oldset = ¤t->saved_sigmask; | ||
640 | else | ||
641 | oldset = ¤t->blocked; | ||
642 | if (handle_signal(signr, &ka, &info, oldset, regs) == 0) { | ||
643 | /* | 637 | /* |
644 | * A signal was successfully delivered; the saved | 638 | * A signal was successfully delivered; the saved |
645 | * sigmask will have been stored in the signal frame, | 639 | * sigmask will have been stored in the signal frame, |