Skip to content

Commit

Permalink
[PATCH] ppc32: Simplified load string emulation error checking
Browse files Browse the repository at this point in the history
The error checking for emulation of load string instructions was overly
generous and would cause certain valid forms of the instructions to be
treated as illegal.  We drop the range checking since the architecture
allows this to be boundedly undefined.  Tests on CPUs that support these
instructions appear not do cause illegal instruction traps on range errors
and just allow the execution to occur.

Thanks to Kim Phillips for debugging this and figuring out what real HW was
doing.

Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Kumar Gala authored and Linus Torvalds committed May 28, 2005
1 parent 91f9855 commit 92b4dc1
Showing 1 changed file with 1 addition and 6 deletions.
7 changes: 1 addition & 6 deletions arch/ppc/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -408,12 +408,7 @@ static int emulate_string_inst(struct pt_regs *regs, u32 instword)

/* Early out if we are an invalid form of lswx */
if ((instword & INST_STRING_MASK) == INST_LSWX)
if ((rA >= rT) || (NB_RB >= rT) || (rT == rA) || (rT == NB_RB))
return -EINVAL;

/* Early out if we are an invalid form of lswi */
if ((instword & INST_STRING_MASK) == INST_LSWI)
if ((rA >= rT) || (rT == rA))
if ((rT == rA) || (rT == NB_RB))
return -EINVAL;

EA = (rA == 0) ? 0 : regs->gpr[rA];
Expand Down

0 comments on commit 92b4dc1

Please sign in to comment.