--- linux.vanilla/mm/page_alloc.c Sun Mar 25 17:37:41 2001 +++ linux.21p1/mm/page_alloc.c Sat Dec 29 03:11:56 2001 @@ -149,7 +149,8 @@ * local since we must deal with fragmentation too and we * can't rely on the nr_local_pages information. */ - if (current->nr_local_pages && !current->allocation_order) + if ((current->nr_local_pages && !current->allocation_order) || + in_interrupt()) goto back_local_freelist; page = mem_map + map_nr;