Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ded3ef0f authored by Russell King's avatar Russell King
Browse files

ARM: Fix broken commit 0cc41e4a corrupting kernel messages



Commit 0cc41e4a (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: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent b255188f
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -22,12 +22,14 @@
	.macro	DBGSTR, str
#ifdef DEBUG
	stmfd	sp!, {r0-r3, ip, lr}
	add	r0, pc, #4
	ldr	r0, =1f
	bl	printk
	b	1f
	.asciz  KERN_DEBUG "VFP: \str\n"
	.balign 4
1:	ldmfd	sp!, {r0-r3, ip, lr}
	ldmfd	sp!, {r0-r3, ip, lr}

	.pushsection .rodata, "a"
1:	.ascii	KERN_DEBUG "VFP: \str\n"
	.byte	0
	.previous
#endif
	.endm

@@ -35,12 +37,14 @@
#ifdef DEBUG
	stmfd	sp!, {r0-r3, ip, lr}
	mov	r1, \arg
	add	r0, pc, #4
	ldr	r0, =1f
	bl	printk
	b	1f
	.asciz  KERN_DEBUG "VFP: \str\n"
	.balign 4
1:	ldmfd	sp!, {r0-r3, ip, lr}
	ldmfd	sp!, {r0-r3, ip, lr}

	.pushsection .rodata, "a"
1:	.ascii	KERN_DEBUG "VFP: \str\n"
	.byte	0
	.previous
#endif
	.endm

@@ -50,12 +54,14 @@
	mov	r3, \arg3
	mov	r2, \arg2
	mov	r1, \arg1
	add	r0, pc, #4
	ldr	r0, =1f
	bl	printk
	b	1f
	.asciz  KERN_DEBUG "VFP: \str\n"
	.balign 4
1:	ldmfd	sp!, {r0-r3, ip, lr}
	ldmfd	sp!, {r0-r3, ip, lr}

	.pushsection .rodata, "a"
1:	.ascii	KERN_DEBUG "VFP: \str\n"
	.byte	0
	.previous
#endif
	.endm