diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-02-26 09:41:41 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-03-01 16:09:59 -0500 |
commit | ded3ef0fa71696d3cf631fa4b8ac65313f370b4c (patch) | |
tree | 9e868d4b7f27c0701a683bfbad08e779233e895f /arch | |
parent | b255188f90e2bade1bd11a986dd1ca4861869f4d (diff) |
ARM: Fix broken commit 0cc41e4a21d43 corrupting kernel messages
Commit 0cc41e4a21d43 (arch: remove direct definitions of KERN_<LEVEL>
uses) is broken - not enough thought was put into changing:
.asciz "string"
to
.asciz "string1" "string2"
The problem is that each string gets _separately_ NUL terminated, so
the result is a string containing:
"string1\0string2\0"
rather than:
"string1string2\0"
With our new printk levels, this ends up as - eg, KERN_DEBUG "string":
0x01 0x00 0x07 0x00 "string" 0x00
which produces lots of \x01 in the kernel log.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/vfp/vfphw.S | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S index dd5e56f95f3f..8d10dc8a1e17 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S | |||
@@ -22,12 +22,14 @@ | |||
22 | .macro DBGSTR, str | 22 | .macro DBGSTR, str |
23 | #ifdef DEBUG | 23 | #ifdef DEBUG |
24 | stmfd sp!, {r0-r3, ip, lr} | 24 | stmfd sp!, {r0-r3, ip, lr} |
25 | add r0, pc, #4 | 25 | ldr r0, =1f |
26 | bl printk | 26 | bl printk |
27 | b 1f | 27 | ldmfd sp!, {r0-r3, ip, lr} |
28 | .asciz KERN_DEBUG "VFP: \str\n" | 28 | |
29 | .balign 4 | 29 | .pushsection .rodata, "a" |
30 | 1: ldmfd sp!, {r0-r3, ip, lr} | 30 | 1: .ascii KERN_DEBUG "VFP: \str\n" |
31 | .byte 0 | ||
32 | .previous | ||
31 | #endif | 33 | #endif |
32 | .endm | 34 | .endm |
33 | 35 | ||
@@ -35,12 +37,14 @@ | |||
35 | #ifdef DEBUG | 37 | #ifdef DEBUG |
36 | stmfd sp!, {r0-r3, ip, lr} | 38 | stmfd sp!, {r0-r3, ip, lr} |
37 | mov r1, \arg | 39 | mov r1, \arg |
38 | add r0, pc, #4 | 40 | ldr r0, =1f |
39 | bl printk | 41 | bl printk |
40 | b 1f | 42 | ldmfd sp!, {r0-r3, ip, lr} |
41 | .asciz KERN_DEBUG "VFP: \str\n" | 43 | |
42 | .balign 4 | 44 | .pushsection .rodata, "a" |
43 | 1: ldmfd sp!, {r0-r3, ip, lr} | 45 | 1: .ascii KERN_DEBUG "VFP: \str\n" |
46 | .byte 0 | ||
47 | .previous | ||
44 | #endif | 48 | #endif |
45 | .endm | 49 | .endm |
46 | 50 | ||
@@ -50,12 +54,14 @@ | |||
50 | mov r3, \arg3 | 54 | mov r3, \arg3 |
51 | mov r2, \arg2 | 55 | mov r2, \arg2 |
52 | mov r1, \arg1 | 56 | mov r1, \arg1 |
53 | add r0, pc, #4 | 57 | ldr r0, =1f |
54 | bl printk | 58 | bl printk |
55 | b 1f | 59 | ldmfd sp!, {r0-r3, ip, lr} |
56 | .asciz KERN_DEBUG "VFP: \str\n" | 60 | |
57 | .balign 4 | 61 | .pushsection .rodata, "a" |
58 | 1: ldmfd sp!, {r0-r3, ip, lr} | 62 | 1: .ascii KERN_DEBUG "VFP: \str\n" |
63 | .byte 0 | ||
64 | .previous | ||
59 | #endif | 65 | #endif |
60 | .endm | 66 | .endm |
61 | 67 | ||