Thread (29 messages) 29 messages, 7 authors, 2009-11-23
STALE6031d

[PATCH] check put_user fail in do_signal when enable OABI_COMPACT

From: Jean Pihet <hidden>
Date: 2009-10-27 18:37:56

On Tuesday 27 October 2009 19:08:07 Nicolas Pitre wrote:
On Tue, 27 Oct 2009, Jean Pihet wrote:
quoted
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index f330974..4366cc0 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -676,8 +676,14 @@ static int do_signal(sigset_t *oldset, 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) {
+					flush_icache_range((unsigned long)usp,
+						(unsigned long)(usp + 1));
Why are you flushing the icache?  There is no code on the stack anymore.
Yes indeed there is no more code modified.
Side question: does the put_user requires a flush of some sort? If not, why?

Is it OK to re-send a patch with the call to flush_icache_range removed?

Thanks!
Nicolas
Jean
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help