Patchwork powerpc: Fix reading/writing FPRs on 32 bit apps with ptrace on 64 bit kernels

login
register
mail settings
Submitter Michael Neuling
Date March 24, 2009, 6:04 a.m.
Message ID <26680.1237874677@neuling.org>
Download mbox | patch
Permalink /patch/24940/
State Superseded
Headers show

Comments

Michael Neuling - March 24, 2009, 6:04 a.m.
Fix the calculation for offsetting into the FPRs when ptracing a 32 bit
app on 64 bit kernels.

Signed-off-by: Michael Neuling <mikey@neuling.org>
cc: stable@kernel.org
---
benh: it'd be nice if this went back in to 27,28 & 29

Also, I vote we kill ptracing 64 bit apps from 32 apps as it's
completely broken and no one has ever noticed.

 arch/powerpc/kernel/ptrace32.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch

Index: linux-2.6-ozlabs/arch/powerpc/kernel/ptrace32.c
===================================================================
--- linux-2.6-ozlabs.orig/arch/powerpc/kernel/ptrace32.c
+++ linux-2.6-ozlabs/arch/powerpc/kernel/ptrace32.c
@@ -67,7 +67,7 @@  static long compat_ptrace_old(struct tas
 /* Macros to workout the correct index for the FPR in the thread struct */
 #define FPRNUMBER(i) (((i) - PT_FPR0) >> 1)
 #define FPRHALF(i) (((i) - PT_FPR0) & 1)
-#define FPRINDEX(i) TS_FPRWIDTH * FPRNUMBER(i) + FPRHALF(i)
+#define FPRINDEX(i) TS_FPRWIDTH * FPRNUMBER(i) * 2 + FPRHALF(i)
 
 long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
 			compat_ulong_t caddr, compat_ulong_t cdata)