aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2012-05-04 03:46:04 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-05-16 08:42:40 -0400
commitc15787a7c3f702c4240708fb8e63abce1bfe1136 (patch)
tree55d861db36b6b4b185bfb950e96e3132ed1b7d12 /arch/s390
parenta686425b31bb6441f6e20d698bf31dc65043f61f (diff)
s390: remove dead code from signal handler
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>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/kernel/compat_signal.c7
-rw-r--r--arch/s390/kernel/signal.c16
2 files changed, 0 insertions, 23 deletions
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 28040fd5e8a2..377c096ca4a7 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -437,13 +437,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
437 sp = current->sas_ss_sp + current->sas_ss_size; 437 sp = current->sas_ss_sp + current->sas_ss_size;
438 } 438 }
439 439
440 /* This is the legacy signal stack switching. */
441 else if (!user_mode(regs) &&
442 !(ka->sa.sa_flags & SA_RESTORER) &&
443 ka->sa.sa_restorer) {
444 sp = (unsigned long) ka->sa.sa_restorer;
445 }
446
447 return (void __user *)((sp - frame_size) & -8ul); 440 return (void __user *)((sp - frame_size) & -8ul);
448} 441}
449 442
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index f7582b27f600..8a4e2b760d56 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -235,13 +235,6 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
235 sp = current->sas_ss_sp + current->sas_ss_size; 235 sp = current->sas_ss_sp + current->sas_ss_size;
236 } 236 }
237 237
238 /* This is the legacy signal stack switching. */
239 else if (!user_mode(regs) &&
240 !(ka->sa.sa_flags & SA_RESTORER) &&
241 ka->sa.sa_restorer) {
242 sp = (unsigned long) ka->sa.sa_restorer;
243 }
244
245 return (void __user *)((sp - frame_size) & -8ul); 238 return (void __user *)((sp - frame_size) & -8ul);
246} 239}
247 240
@@ -414,15 +407,6 @@ void do_signal(struct pt_regs *regs)
414 struct k_sigaction ka; 407 struct k_sigaction ka;
415 sigset_t *oldset; 408 sigset_t *oldset;
416 409
417 /*
418 * We want the common case to go fast, which
419 * is why we may in certain cases get here from
420 * kernel mode. Just return without doing anything
421 * if so.
422 */
423 if (!user_mode(regs))
424 return;
425
426 if (test_thread_flag(TIF_RESTORE_SIGMASK)) 410 if (test_thread_flag(TIF_RESTORE_SIGMASK))
427 oldset = &current->saved_sigmask; 411 oldset = &current->saved_sigmask;
428 else 412 else