* [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.