* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox