summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2014-03-10 12:51:58 +1100
committerAnton Blanchard <anton@samba.org>2014-04-23 10:05:25 +1000
commitd51959d70ffc55d1c829e881a6121e6fbbfb29af (patch)
treebfecc1c5d6272d549d66fb25113770d79602adeb
parent6403105bfda4d6934b39aeb85ff818b185b42de8 (diff)
downloadop-kernel-dev-d51959d70ffc55d1c829e881a6121e6fbbfb29af.zip
op-kernel-dev-d51959d70ffc55d1c829e881a6121e6fbbfb29af.tar.gz
powerpc/tracing: TRACE_WITH_FRAME_BUFFER creates invalid stack frames
TRACE_WITH_FRAME_BUFFER creates 32 byte stack frames. On ppc64 ABIv1 this is too small and a callee could corrupt the stack by writing to the parameter save area (starting at offset 48). Signed-off-by: Anton Blanchard <anton@samba.org>
-rw-r--r--arch/powerpc/include/asm/irqflags.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/irqflags.h b/arch/powerpc/include/asm/irqflags.h
index f62c056..e20eb95 100644
--- a/arch/powerpc/include/asm/irqflags.h
+++ b/arch/powerpc/include/asm/irqflags.h
@@ -20,9 +20,9 @@
*/
#define TRACE_WITH_FRAME_BUFFER(func) \
mflr r0; \
- stdu r1, -32(r1); \
+ stdu r1, -STACK_FRAME_OVERHEAD(r1); \
std r0, 16(r1); \
- stdu r1, -32(r1); \
+ stdu r1, -STACK_FRAME_OVERHEAD(r1); \
bl func; \
ld r1, 0(r1); \
ld r1, 0(r1);
OpenPOWER on IntegriCloud