Subject: [PATCH] powerpc: Fix reading/writing FPRs on 32 bit apps with ptrace on 64 bit kernels

From: Michael Neuling <[email-masked]>
Date: Tue, 24 Mar 2009 17:04:37 +1100

Fix the calculation for offsetting into the FPRs when ptracing a 32 bit
app on 64 bit kernels.

Signed-off-by: Michael Neuling <[email-masked]>
cc: [email-masked]
---
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(-)

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)