If someone runs page_address() before page_address_init(), the kernel locks
up over uninitialised spinlocks.

This only happens with the 4:4 patch, but it is more robust to run
page_address_init() before setup_arch().  page_address_init() simply
initialises statically allocated storage.


---

 25-akpm/init/main.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN init/main.c~earlier-page_address_init init/main.c
--- 25/init/main.c~earlier-page_address_init	Mon Mar 29 16:34:51 2004
+++ 25-akpm/init/main.c	Mon Mar 29 16:34:51 2004
@@ -463,6 +463,7 @@ asmlinkage void __init start_kernel(void
  * enable them
  */
 	lock_kernel();
+	page_address_init();
 	printk(linux_banner);
 	setup_arch(&command_line);
 	setup_per_cpu_areas();
@@ -513,7 +514,6 @@ asmlinkage void __init start_kernel(void
 		initrd_start = 0;
 	}
 #endif
-	page_address_init();
 	mem_init();
 	kmem_cache_init();
 	if (late_time_init)

_