From 161761c9b9d35e581a0ce3c6889ef9e066b1f408 Mon Sep 17 00:00:00 2001 From: Jean PIHET Date: Mon, 23 Nov 2009 17:03:32 +0100 Subject: [PATCH] --- yaml --- r: 168993 b: refs/heads/master c: 3336f4f08e0dad7a2b6493c80b49b685141d53ad h: refs/heads/master i: 168991: bef4b4b6561330ab26099bd4083d299732fd56fa v: v3 --- [refs] | 2 +- trunk/arch/arm/kernel/signal.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 59c15ae52362..684e4af4e6e8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cefbf4ea629427af2fb4709bab9fe126dcddc234 +refs/heads/master: 3336f4f08e0dad7a2b6493c80b49b685141d53ad diff --git a/trunk/arch/arm/kernel/signal.c b/trunk/arch/arm/kernel/signal.c index 2a573d4fea24..e7714f367eb8 100644 --- a/trunk/arch/arm/kernel/signal.c +++ b/trunk/arch/arm/kernel/signal.c @@ -662,8 +662,12 @@ static void do_signal(struct pt_regs *regs, int syscall) regs->ARM_sp -= 4; usp = (u32 __user *)regs->ARM_sp; - put_user(regs->ARM_pc, usp); - regs->ARM_pc = KERN_RESTART_CODE; + if (put_user(regs->ARM_pc, usp) == 0) { + regs->ARM_pc = KERN_RESTART_CODE; + } else { + regs->ARM_sp += 4; + force_sigsegv(0, current); + } #endif } }