[openfirmware] [commit] r2267 - in cpu: arm arm/olpc/1.75 x86/pc/olpc
repository service
svn at openfirmware.info
Mon Jun 13 11:51:28 CEST 2011
Author: wmb
Date: Mon Jun 13 11:51:27 2011
New Revision: 2267
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2267
Log:
OLPC XO-1.75 trac #10892 - fixed crash re-executing cifs-connect - caused by memory tests overwriting the crypto code.
Modified:
cpu/arm/linux.fth
cpu/arm/olpc/1.75/fw.bth
cpu/x86/pc/olpc/crypto.fth
Modified: cpu/arm/linux.fth
==============================================================================
--- cpu/arm/linux.fth Mon Jun 13 06:41:52 2011 (r2266)
+++ cpu/arm/linux.fth Mon Jun 13 11:51:27 2011 (r2267)
@@ -14,17 +14,21 @@
\ If we have already loaded a RAMdisk in high memory, its base is the memory limit
ramdisk-adr ?dup if exit then
- " /memory" find-package 0= abort" No /memory node" ( phandle )
- " available" rot get-package-property abort" No memory node available property" ( $ )
- \ Find the memory piece that starts at 0
- begin dup 8 >= while ( $ )
- decode-int h# 1000 u<= if ( $ ) \ Found the one we want
- decode-int ( $ limit )
- nip nip exit
- then ( $ )
- decode-int drop ( $ )
- repeat ( $ )
- 2drop true abort" No suitable memory piece"
+ 0 0 ( size base )
+ " /memory" find-package 0= abort" No /memory node" ( size base phandle )
+ " available" rot get-package-property abort" No memory node available property" ( limit size $ )
+ \ Find the largest memory piece
+ begin dup 8 >= while ( size base $ )
+ 2 decode-ints ( size base $ size1 base1 )
+ 5 pick 2 pick <= if ( size base $ size1 base1 )
+ 2>r 2nip 2r> ( $ size1 base1 )
+ 2swap ( size' base' $ )
+ else ( size base $ size1 base1 )
+ 2drop ( size base $ )
+ then ( size base $ )
+ repeat ( size base $ )
+ 2drop ( size base )
+ + ( limit )
;
: add-root-dev ( cmdline$ -- cmdline$' )
Modified: cpu/arm/olpc/1.75/fw.bth
==============================================================================
--- cpu/arm/olpc/1.75/fw.bth Mon Jun 13 06:41:52 2011 (r2266)
+++ cpu/arm/olpc/1.75/fw.bth Mon Jun 13 11:51:27 2011 (r2267)
@@ -26,6 +26,7 @@
: usb-quiet ( -- )
[ ' linux-hook behavior compile, ] \ Chain to old behavior
+ unload-crypto
" /usb" " reset-usb" execute-device-method drop
;
Modified: cpu/x86/pc/olpc/crypto.fth
==============================================================================
--- cpu/x86/pc/olpc/crypto.fth Mon Jun 13 06:41:52 2011 (r2266)
+++ cpu/x86/pc/olpc/crypto.fth Mon Jun 13 11:51:27 2011 (r2267)
@@ -5,6 +5,7 @@
h# d0000 constant verify-bss \ The address the code is linked to run at
h# 10000 constant /verify-bss
h# 9c000 constant verify-stack
+0 value /verify
0 value crypto-loaded?
: load-crypto ( -- error? )
@@ -12,10 +13,17 @@
" verify" find-drop-in 0= if
." Can't find crypto code" cr true exit
then ( prog$ )
- 2dup verify-base swap move free-mem ( )
+ dup to /verify ( prog$ )
+ verify-base /verify 0 mem-claim drop ( prog$ )
+ 2dup verify-base swap move free-mem ( )
true to crypto-loaded?
false
;
+: unload-crypto ( -- )
+ crypto-loaded? 0= if exit then
+ verify-base /verify mem-release
+ false to crypto-loaded?
+;
: signature-bad? ( data$ sig$ key$ hashname$ -- mismatch? )
$cstr
More information about the openfirmware
mailing list