diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-05-04 03:46:04 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-05-16 08:42:40 -0400 |
commit | c15787a7c3f702c4240708fb8e63abce1bfe1136 (patch) | |
tree | 55d861db36b6b4b185bfb950e96e3132ed1b7d12 /arch/s390 | |
parent | a686425b31bb6441f6e20d698bf31dc65043f61f (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.c | 7 | ||||
-rw-r--r-- | arch/s390/kernel/signal.c | 16 |
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 = ¤t->saved_sigmask; | 411 | oldset = ¤t->saved_sigmask; |
428 | else | 412 | else |