diff -ruNp 817-enable-slab-alloc-fallback-to-suspend-memory-pool-old/mm/slab.c 817-enable-slab-alloc-fallback-to-suspend-memory-pool-new/mm/slab.c
--- 817-enable-slab-alloc-fallback-to-suspend-memory-pool-old/mm/slab.c	2004-12-13 18:36:01.000000000 +1100
+++ 817-enable-slab-alloc-fallback-to-suspend-memory-pool-new/mm/slab.c	2004-12-13 18:09:54.000000000 +1100
@@ -877,11 +877,17 @@ static void *kmem_getpages(kmem_cache_t 
 	flags |= cachep->gfpflags;
 	if (likely(nodeid == -1)) {
 		addr = (void*)__get_free_pages(flags, cachep->gfporder);
+		if (unlikely((!addr) && (current->pid == suspend_task) &&
+		    test_suspend_state(SUSPEND_SLAB_ALLOC_FALLBACK)))
+			addr = (void *) suspend2_get_grabbed_pages(0);
 		if (!addr)
 			return NULL;
 		page = virt_to_page(addr);
 	} else {
 		page = alloc_pages_node(nodeid, flags, cachep->gfporder);
+		if (unlikely((!page) && (current->pid == suspend_task) &&
+		    test_suspend_state(SUSPEND_SLAB_ALLOC_FALLBACK)))
+			page = virt_to_page(suspend2_get_grabbed_pages(0));
 		if (!page)
 			return NULL;
 		addr = page_address(page);
