Bug in get_insn_opcode.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There is a bug in the function get_insn_opcode in traps.c

As 'epc' is an int pointer here, it should only be increased by 1 (4
byte) and not by 4 (4*4 = 16 bytes).
See the patch below.

/Carsten

Index: arch/mips/kernel/traps.c
===================================================================
RCS file: /home/repository/sw/linux-2.4.0/arch/mips/kernel/traps.c,v
retrieving revision 1.10
diff -u -r1.10 traps.c
--- traps.c     2001/02/28 13:46:43     1.10
+++ traps.c     2001/03/02 16:50:27
@@ -410,7 +410,7 @@

        epc = (unsigned int *) (unsigned long) regs->cp0_epc;
        if (regs->cp0_cause & CAUSEF_BD)
-               epc += 4;
+               epc++;

        if (verify_area(VERIFY_READ, epc, 4)) {
                force_sig(SIGSEGV, current);
Index: arch/mips64/kernel/traps.c
===================================================================
RCS file: /home/repository/sw/linux-2.4.0/arch/mips64/kernel/traps.c,v
retrieving revision 1.5
diff -u -r1.5 traps.c
--- traps.c     2001/02/19 16:02:52     1.5
+++ traps.c     2001/03/02 16:50:13
@@ -371,7 +371,7 @@

        epc = (unsigned int *) (unsigned long) regs->cp0_epc;
        if (regs->cp0_cause & CAUSEF_BD)
-               epc += 4;
+               epc++;

        if (verify_area(VERIFY_READ, epc, 4)) {
                force_sig(SIGSEGV, current);




--
_    _ ____  ___   Carsten Langgaard   Mailto:carstenl@mips.com
|\  /|||___)(___   MIPS Denmark        Direct: +45 4486 5527
| \/ |||    ____)  Lautrupvang 4B      Switch: +45 4486 5555
  TECHNOLOGIES     2750 Ballerup       Fax...: +45 4486 5556
                   Denmark             http://www.mips.com





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux