powerpc: Fix kernel log of oops/panic instruction dump
A kernel oops/panic prints an instruction dump showing several instructions before and after the instruction which caused the oops/panic. The code intended that the faulting instruction be enclosed in angle brackets, however a bug caused the faulting instruction to be interpreted by printk() as the message log level. To fix this, the KERN_CONT log level is added before the actual text of the printed message. === Before the patch === [ 1081.587266] Instruction dump: [ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001 [ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000 [ 1081.602500] 4e800020 3803ffd0 2b800009 <4>[ 1081.587266] Instruction dump: <4>[ 1081.590236] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001 <4>[ 1081.598034] 3d20c03a 9009a114 7c0004ac 39200000 <98090000>[ 1081.602500] 4e800020 3803ffd0 2b800009 === After the patch === [ 51.385216] Instruction dump: [ 51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001 [ 51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009 <4>[ 51.385216] Instruction dump: <4>[ 51.388186] 7c000110 7c0000f8 5400077c 552907f6 7d290378 992b0003 4e800020 38000001 <4>[ 51.395986] 3d20c03a 9009a114 7c0004ac 39200000 <98090000> 4e800020 3803ffd0 2b800009 Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu> Cc: Paul Mackerras <paulus@samba.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
778a785f02
commit
40c8cefaaf
|
@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs)
|
||||||
*/
|
*/
|
||||||
if (!__kernel_text_address(pc) ||
|
if (!__kernel_text_address(pc) ||
|
||||||
__get_user(instr, (unsigned int __user *)pc)) {
|
__get_user(instr, (unsigned int __user *)pc)) {
|
||||||
printk("XXXXXXXX ");
|
printk(KERN_CONT "XXXXXXXX ");
|
||||||
} else {
|
} else {
|
||||||
if (regs->nip == pc)
|
if (regs->nip == pc)
|
||||||
printk("<%08x> ", instr);
|
printk(KERN_CONT "<%08x> ", instr);
|
||||||
else
|
else
|
||||||
printk("%08x ", instr);
|
printk(KERN_CONT "%08x ", instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
pc += sizeof(int);
|
pc += sizeof(int);
|
||||||
|
|
Loading…
Reference in New Issue