--- linux-2.6-npiggin/mm/mempool.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN mm/mempool.c~mempool-can-fail mm/mempool.c --- linux-2.6/mm/mempool.c~mempool-can-fail 2005-03-29 19:45:02.000000000 +1000 +++ linux-2.6-npiggin/mm/mempool.c 2005-03-29 19:48:05.000000000 +1000 @@ -198,7 +198,10 @@ void * mempool_alloc(mempool_t *pool, in void *element; unsigned long flags; DEFINE_WAIT(wait); - int gfp_nowait = gfp_mask & ~(__GFP_WAIT | __GFP_IO); + int gfp_nowait; + + gfp_mask |= __GFP_NORETRY; /* don't loop in __alloc_pages */ + gfp_nowait = gfp_mask & ~(__GFP_WAIT | __GFP_IO); might_sleep_if(gfp_mask & __GFP_WAIT); repeat_alloc: _