All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] stop infinite loop in start_ldr due to unaligned sections
@ 2006-10-20 13:57 Olaf Hering
  0 siblings, 0 replies; only message in thread
From: Olaf Hering @ 2006-10-20 13:57 UTC (permalink / raw)
  To: Paul Mackeras, linuxppc-dev


Quick fix for lack of memset(__bss_start,0,_end-__bss_start) in load_kernel()
If edata is unaligned, the loop will overwrite all memory because
r3 and r4 will never be equal.

Signed-off-by: Olaf Hering <olaf@aepfle.de>

---
 arch/ppc/boot/simple/relocate.S |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6.19-rc2/arch/ppc/boot/simple/relocate.S
===================================================================
--- linux-2.6.19-rc2.orig/arch/ppc/boot/simple/relocate.S
+++ linux-2.6.19-rc2/arch/ppc/boot/simple/relocate.S
@@ -154,8 +154,8 @@ do_relocate_out:
 
 start_ldr:
 /* Clear all of BSS and set up stack for C calls */
-	lis	r3,edata@h
-	ori	r3,r3,edata@l
+	lis	r3,__bss_start@h
+	ori	r3,r3,__bss_start@l
 	lis	r4,end@h
 	ori	r4,r4,end@l
 	subi	r3,r3,4
@@ -163,7 +163,7 @@ start_ldr:
 	li	r0,0
 50:	stwu	r0,4(r3)
 	cmpw	cr0,r3,r4
-	bne	50b
+	blt	50b
 90:	mr	r9,r1		/* Save old stack pointer (in case it matters) */
 	lis	r1,.stack@h
 	ori	r1,r1,.stack@l

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-10-20 14:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-20 13:57 [PATCH] stop infinite loop in start_ldr due to unaligned sections Olaf Hering

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.