diff -Nurp linux-2.6.0.orig/fs/dcache.c linux-2.6.0/fs/dcache.c --- linux-2.6.0.orig/fs/dcache.c 2003-12-17 18:58:15.000000000 -0800 +++ linux-2.6.0/fs/dcache.c 2004-01-08 14:59:58.000000000 -0800 @@ -1571,11 +1571,9 @@ static void __init dcache_init(unsigned set_shrinker(DEFAULT_SEEKS, shrink_dcache_memory); -#if PAGE_SHIFT < 13 - mempages >>= (13 - PAGE_SHIFT); -#endif + mempages >>= 1; mempages *= sizeof(struct hlist_head); - for (order = 0; ((1UL << order) << PAGE_SHIFT) < mempages; order++) + for (order = 0; (order < 10) && (((1UL << order) << PAGE_SHIFT) < mempages); order++) ; do { diff -Nurp linux-2.6.0.orig/fs/inode.c linux-2.6.0/fs/inode.c --- linux-2.6.0.orig/fs/inode.c 2003-12-17 18:59:55.000000000 -0800 +++ linux-2.6.0/fs/inode.c 2004-01-08 15:00:19.000000000 -0800 @@ -1340,9 +1340,9 @@ void __init inode_init(unsigned long mem for (i = 0; i < ARRAY_SIZE(i_wait_queue_heads); i++) init_waitqueue_head(&i_wait_queue_heads[i].wqh); - mempages >>= (14 - PAGE_SHIFT); + mempages >>= 2; mempages *= sizeof(struct hlist_head); - for (order = 0; ((1UL << order) << PAGE_SHIFT) < mempages; order++) + for (order = 0; (order < 10) && (((1UL << order) << PAGE_SHIFT) < mempages); order++) ; do { diff -Nurp linux-2.6.0.orig/net/ipv4/route.c linux-2.6.0/net/ipv4/route.c --- linux-2.6.0.orig/net/ipv4/route.c 2003-12-17 18:59:55.000000000 -0800 +++ linux-2.6.0/net/ipv4/route.c 2004-01-08 15:01:17.000000000 -0800 @@ -2747,7 +2747,7 @@ int __init ip_rt_init(void) goal = num_physpages >> (26 - PAGE_SHIFT); - for (order = 0; (1UL << order) < goal; order++) + for (order = 0; (order < 10) && ((1UL << order) < goal); order++) /* NOTHING */; do { diff -Nurp linux-2.6.0.orig/net/ipv4/tcp.c linux-2.6.0/net/ipv4/tcp.c --- linux-2.6.0.orig/net/ipv4/tcp.c 2003-12-17 18:58:38.000000000 -0800 +++ linux-2.6.0/net/ipv4/tcp.c 2004-01-08 15:00:42.000000000 -0800 @@ -2610,7 +2610,7 @@ void __init tcp_init(void) else goal = num_physpages >> (23 - PAGE_SHIFT); - for (order = 0; (1UL << order) < goal; order++) + for (order = 0; (order < 10) && ((1UL << order) < goal); order++) ; do { tcp_ehash_size = (1UL << order) * PAGE_SIZE /