diff options
| -rw-r--r-- | arch/arm/kernel/signal.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 2a573d4fea24..e7714f367eb8 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
| @@ -662,8 +662,12 @@ static void do_signal(struct pt_regs *regs, int syscall) | |||
| 662 | regs->ARM_sp -= 4; | 662 | regs->ARM_sp -= 4; |
| 663 | usp = (u32 __user *)regs->ARM_sp; | 663 | usp = (u32 __user *)regs->ARM_sp; |
| 664 | 664 | ||
| 665 | put_user(regs->ARM_pc, usp); | 665 | if (put_user(regs->ARM_pc, usp) == 0) { |
| 666 | regs->ARM_pc = KERN_RESTART_CODE; | 666 | regs->ARM_pc = KERN_RESTART_CODE; |
| 667 | } else { | ||
| 668 | regs->ARM_sp += 4; | ||
| 669 | force_sigsegv(0, current); | ||
| 670 | } | ||
| 667 | #endif | 671 | #endif |
| 668 | } | 672 | } |
| 669 | } | 673 | } |
