diff options
author | Cedric Le Goater <clg@fr.ibm.com> | 2006-01-06 03:19:10 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-06 11:33:49 -0500 |
commit | 4e3df37e7fb4e41bec84465ff31949737160ed58 (patch) | |
tree | 99860db17a34bd7f8ab18b97bf5f842141a749a7 /arch/s390/kernel | |
parent | a63a4931c301a14ca79c41fec0b99d898dbba1fb (diff) |
[PATCH] s390: rt_sigreturn fix
Check return code of do_sigaltstack and force a SIGSEGV if it is -EFAULT.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Cedric Le Goater <clg@fr.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/compat_signal.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/signal.c | 6 |
2 files changed, 3 insertions, 5 deletions
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index 4ff6808456ea..fa2b3bc22f20 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
@@ -467,8 +467,6 @@ asmlinkage long sys32_rt_sigreturn(struct pt_regs *regs) | |||
467 | if (err) | 467 | if (err) |
468 | goto badframe; | 468 | goto badframe; |
469 | 469 | ||
470 | /* It is more difficult to avoid calling this function than to | ||
471 | call it and ignore errors. */ | ||
472 | set_fs (KERNEL_DS); | 470 | set_fs (KERNEL_DS); |
473 | do_sigaltstack((stack_t __user *)&st, NULL, regs->gprs[15]); | 471 | do_sigaltstack((stack_t __user *)&st, NULL, regs->gprs[15]); |
474 | set_fs (old_fs); | 472 | set_fs (old_fs); |
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c index 6e0110d71191..13592d00a10f 100644 --- a/arch/s390/kernel/signal.c +++ b/arch/s390/kernel/signal.c | |||
@@ -254,9 +254,9 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) | |||
254 | if (restore_sigregs(regs, &frame->uc.uc_mcontext)) | 254 | if (restore_sigregs(regs, &frame->uc.uc_mcontext)) |
255 | goto badframe; | 255 | goto badframe; |
256 | 256 | ||
257 | /* It is more difficult to avoid calling this function than to | 257 | if (do_sigaltstack(&frame->uc.uc_stack, NULL, |
258 | call it and ignore errors. */ | 258 | regs->gprs[15]) == -EFAULT) |
259 | do_sigaltstack(&frame->uc.uc_stack, NULL, regs->gprs[15]); | 259 | goto badframe; |
260 | return regs->gprs[2]; | 260 | return regs->gprs[2]; |
261 | 261 | ||
262 | badframe: | 262 | badframe: |