s390: remove dead code from signal handler
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 4 May 2012 07:46:04 +0000 (09:46 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 16 May 2012 12:42:40 +0000 (14:42 +0200)
The code in entry[64].S calls do_signal only on return to user space.
user_mode(regs) is true for every calls to do_signal, it is unnecessary
to recheck user_mode at the start of do_signal and the legacy signal
stack switching path in get_sigframe is never reached.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/compat_signal.c
arch/s390/kernel/signal.c

index 28040fd..377c096 100644 (file)
@@ -437,13 +437,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
                        sp = current->sas_ss_sp + current->sas_ss_size;
        }
 
-       /* This is the legacy signal stack switching. */
-       else if (!user_mode(regs) &&
-                !(ka->sa.sa_flags & SA_RESTORER) &&
-                ka->sa.sa_restorer) {
-               sp = (unsigned long) ka->sa.sa_restorer;
-       }
-
        return (void __user *)((sp - frame_size) & -8ul);
 }
 
index f7582b2..8a4e2b7 100644 (file)
@@ -235,13 +235,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
                        sp = current->sas_ss_sp + current->sas_ss_size;
        }
 
-       /* This is the legacy signal stack switching. */
-       else if (!user_mode(regs) &&
-                !(ka->sa.sa_flags & SA_RESTORER) &&
-                ka->sa.sa_restorer) {
-               sp = (unsigned long) ka->sa.sa_restorer;
-       }
-
        return (void __user *)((sp - frame_size) & -8ul);
 }
 
@@ -414,15 +407,6 @@ void do_signal(struct pt_regs *regs)
        struct k_sigaction ka;
        sigset_t *oldset;
 
-       /*
-        * We want the common case to go fast, which
-        * is why we may in certain cases get here from
-        * kernel mode. Just return without doing anything
-        * if so.
-        */
-       if (!user_mode(regs))
-               return;
-
        if (test_thread_flag(TIF_RESTORE_SIGMASK))
                oldset = &current->saved_sigmask;
        else