x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
This commit is contained in:
parent
2d997358bb
commit
e23ae9fdfc
|
@ -686,6 +686,8 @@ Patch21022: mm-do-not-stall-in-synchronous-compaction-for-THP-allocations.patch
|
|||
Patch21030: be2net-non-member-vlan-pkts-not-received-in-promisco.patch
|
||||
Patch21031: benet-remove-bogus-unlikely-on-vlan-check.patch
|
||||
|
||||
Patch21040: x86-code-dump-fix-truncation.patch
|
||||
|
||||
Patch21070: oom-fix-integer-overflow-of-points.patch
|
||||
|
||||
#rhbz 728607
|
||||
|
@ -1297,6 +1299,9 @@ ApplyPatch mm-do-not-stall-in-synchronous-compaction-for-THP-allocations.patch
|
|||
ApplyPatch be2net-non-member-vlan-pkts-not-received-in-promisco.patch
|
||||
ApplyPatch benet-remove-bogus-unlikely-on-vlan-check.patch
|
||||
|
||||
#rhbz 736815
|
||||
ApplyPatch x86-code-dump-fix-truncation.patch
|
||||
|
||||
#rhbz 750402
|
||||
ApplyPatch oom-fix-integer-overflow-of-points.patch
|
||||
|
||||
|
@ -1979,6 +1984,9 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Mon Dec 19 2011 Dave Jones <davej@redhat.com>
|
||||
- x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
|
||||
|
||||
* Thu Dec 15 2011 Dennis Gilmore <dennis@ausil.us>
|
||||
- build imx highbank and kirkwood kernel variants on arm
|
||||
- add patch for tegra usb storage resets
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
From: Clemens Ladisch <clemens@ladisch.de>
|
||||
Date: Mon, 19 Dec 2011 21:07:58 +0000 (+0100)
|
||||
Subject: x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
|
||||
X-Git-Url: https://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftip%2Ftip.git;a=commitdiff_plain;h=13f541c10b30fc6529200d7f9a0073217709622f
|
||||
|
||||
x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
|
||||
|
||||
When printing the code bytes in show_registers(), the markers around the
|
||||
byte at the fault address could make the printk() format string look
|
||||
like a valid log level and facility code. This would prevent this byte
|
||||
from being printed and result in a spurious newline:
|
||||
|
||||
[ 7555.765589] Code: 8b 32 e9 94 00 00 00 81 7d 00 ff 00 00 00 0f 87 96 00 00 00 48 8b 83 c0 00 00 00 44 89 e2 44 89 e6 48 89 df 48 8b 80 d8 02 00 00
|
||||
[ 7555.765683] 8b 48 28 48 89 d0 81 e2 ff 0f 00 00 48 c1 e8 0c 48 c1 e0 04
|
||||
|
||||
Add KERN_CONT where needed, and elsewhere in show_registers() for
|
||||
consistency.
|
||||
|
||||
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
|
||||
Link: http://lkml.kernel.org/r/4EEFA7AE.9020407@ladisch.de
|
||||
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
|
||||
---
|
||||
|
||||
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
|
||||
index 3b97a80..c99f9ed 100644
|
||||
--- a/arch/x86/kernel/dumpstack_32.c
|
||||
+++ b/arch/x86/kernel/dumpstack_32.c
|
||||
@@ -116,16 +116,16 @@ void show_registers(struct pt_regs *regs)
|
||||
for (i = 0; i < code_len; i++, ip++) {
|
||||
if (ip < (u8 *)PAGE_OFFSET ||
|
||||
probe_kernel_address(ip, c)) {
|
||||
- printk(" Bad EIP value.");
|
||||
+ printk(KERN_CONT " Bad EIP value.");
|
||||
break;
|
||||
}
|
||||
if (ip == (u8 *)regs->ip)
|
||||
- printk("<%02x> ", c);
|
||||
+ printk(KERN_CONT "<%02x> ", c);
|
||||
else
|
||||
- printk("%02x ", c);
|
||||
+ printk(KERN_CONT "%02x ", c);
|
||||
}
|
||||
}
|
||||
- printk("\n");
|
||||
+ printk(KERN_CONT "\n");
|
||||
}
|
||||
|
||||
int is_valid_bugaddr(unsigned long ip)
|
||||
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
|
||||
index 19853ad..6d728d9 100644
|
||||
--- a/arch/x86/kernel/dumpstack_64.c
|
||||
+++ b/arch/x86/kernel/dumpstack_64.c
|
||||
@@ -284,16 +284,16 @@ void show_registers(struct pt_regs *regs)
|
||||
for (i = 0; i < code_len; i++, ip++) {
|
||||
if (ip < (u8 *)PAGE_OFFSET ||
|
||||
probe_kernel_address(ip, c)) {
|
||||
- printk(" Bad RIP value.");
|
||||
+ printk(KERN_CONT " Bad RIP value.");
|
||||
break;
|
||||
}
|
||||
if (ip == (u8 *)regs->ip)
|
||||
- printk("<%02x> ", c);
|
||||
+ printk(KERN_CONT "<%02x> ", c);
|
||||
else
|
||||
- printk("%02x ", c);
|
||||
+ printk(KERN_CONT "%02x ", c);
|
||||
}
|
||||
}
|
||||
- printk("\n");
|
||||
+ printk(KERN_CONT "\n");
|
||||
}
|
||||
|
||||
int is_valid_bugaddr(unsigned long ip)
|
Loading…
Reference in New Issue