diff -purN v2.6.9/mm/mempool.c test-2.6.9/mm/mempool.c --- v2.6.9/mm/mempool.c 2004-10-18 17:54:37.000000000 -0400 +++ test-2.6.9/mm/mempool.c 2005-05-24 10:47:25.000000000 -0400 @@ -191,7 +191,7 @@ void * mempool_alloc(mempool_t *pool, in { void *element; unsigned long flags; - DEFINE_WAIT(wait); + wait_queue_t wait; int gfp_nowait = gfp_mask & ~(__GFP_WAIT | __GFP_IO); might_sleep_if(gfp_mask & __GFP_WAIT); @@ -229,6 +229,7 @@ repeat_alloc: if (!(gfp_mask & __GFP_WAIT)) return NULL; + init_wait(&wait); prepare_to_wait(&pool->wait, &wait, TASK_UNINTERRUPTIBLE); mb(); if (!pool->curr_nr)