Patchwork powerpc: Fix single step emulation of 32bit overflowed branches

login
register
mail settings
Submitter Michael Neuling
Date May 6, 2013, 11:32 a.m.
Message ID <25892.1367839960@ale.ozlabs.ibm.com>
Download mbox | patch
Permalink /patch/241620/
State Accepted, archived
Commit 70a54a4faec72ee9d12b9c4dfa27bc241deb79a6
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Michael Neuling - May 6, 2013, 11:32 a.m.
Check truncate_if_32bit() on final write to nip.

Signed-off-by: Michael Neuling <mikey@neuling.org>

Patch

diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index e15c521..99c7fc1 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -580,7 +580,7 @@  int __kprobes emulate_step(struct pt_regs *regs, unsigned int instr)
 		if (instr & 1)
 			regs->link = regs->nip;
 		if (branch_taken(instr, regs))
-			regs->nip = imm;
+			regs->nip = truncate_if_32bit(regs->msr, imm);
 		return 1;
 #ifdef CONFIG_PPC64
 	case 17:	/* sc */