]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390: Use block_sigmask()
authorMatt Fleming <matt.fleming@intel.com>
Fri, 19 Aug 2011 16:46:42 +0000 (17:46 +0100)
committerOleg Nesterov <oleg@redhat.com>
Wed, 24 Aug 2011 18:13:11 +0000 (20:13 +0200)
Use the new helper function block_sigmask() 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>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
arch/s390/kernel/compat_signal.c
arch/s390/kernel/signal.c

index a9a285b8c4ad3ccdfafcaf2b1412de4900e2b219..e78415c9ce1a3eccf2102f071d359eee3b90ce5a 100644 (file)
@@ -592,7 +592,6 @@ give_sigsegv:
 int handle_signal32(unsigned long sig, struct k_sigaction *ka,
                    siginfo_t *info, sigset_t *oldset, struct pt_regs *regs)
 {
-       sigset_t blocked;
        int ret;
 
        /* Set up the stack frame */
@@ -602,10 +601,7 @@ int handle_signal32(unsigned long sig, struct k_sigaction *ka,
                ret = setup_frame32(sig, ka, oldset, regs);
        if (ret)
                return ret;
-       sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
-       if (!(ka->sa.sa_flags & SA_NODEFER))
-               sigaddset(&blocked, sig);
-       set_current_blocked(&blocked);
+       block_sigmask(ka, sig);
        return 0;
 }
 
index 9a40e1cc5ec3f5e2b5ce15268b35862d22aff28e..3564636b90bf3e6172d2e13f0d4501bc694f503a 100644 (file)
@@ -373,7 +373,6 @@ static int handle_signal(unsigned long sig, struct k_sigaction *ka,
                         siginfo_t *info, sigset_t *oldset,
                         struct pt_regs *regs)
 {
-       sigset_t blocked;
        int ret;
 
        /* Set up the stack frame */
@@ -383,10 +382,7 @@ static int handle_signal(unsigned long sig, struct k_sigaction *ka,
                ret = setup_frame(sig, ka, oldset, regs);
        if (ret)
                return ret;
-       sigorsets(&blocked, &current->blocked, &ka->sa.sa_mask);
-       if (!(ka->sa.sa_flags & SA_NODEFER))
-               sigaddset(&blocked, sig);
-       set_current_blocked(&blocked);
+       block_sigmask(ka, sig);
        return 0;
 }