diff -u 2.4/mm/page_alloc.c build-2.4/mm/page_alloc.c --- 2.4/mm/page_alloc.c Sat May 26 10:06:29 2001 +++ build-2.4/mm/page_alloc.c Sun May 27 20:12:23 2001 @@ -141,8 +141,11 @@ * since it's nothing important, but we do want to make sure * it never gets negative. */ - if (memory_pressure > NR_CPUS) - memory_pressure--; + { + int mp = memory_pressure-1; + if (mp > 0) + memory_pressure = mp; + } } #define MARK_USED(index, order, area) \ @@ -476,7 +479,7 @@ /* XXX: is pages_min/4 a good amount to reserve for this? */ if (z->free_pages < z->pages_min / 4 && - !(current->flags & PF_MEMALLOC)) + (in_interrupt() || !(current->flags & PF_MEMALLOC))) continue; page = rmqueue(z, order); if (page)