diff -ruN 505-disable-cache-reaping-during-suspend-old/mm/slab.c 505-disable-cache-reaping-during-suspend-new/mm/slab.c
--- 505-disable-cache-reaping-during-suspend-old/mm/slab.c	2004-11-03 21:55:05.000000000 +1100
+++ 505-disable-cache-reaping-during-suspend-new/mm/slab.c	2004-11-06 09:25:01.972547184 +1100
@@ -92,6 +92,7 @@
 #include	<linux/sysctl.h>
 #include	<linux/module.h>
 #include	<linux/rcupdate.h>
+#include	<linux/suspend.h>
 
 #include	<asm/uaccess.h>
 #include	<asm/cacheflush.h>
@@ -2730,7 +2731,9 @@
 {
 	struct list_head *walk;
 
-	if (down_trylock(&cache_chain_sem)) {
+	if ((unlikely(test_suspend_state(SUSPEND_RUNNING))) ||
+		(down_trylock(&cache_chain_sem))) 
+	{
 		/* Give up. Setup the next iteration. */
 		schedule_delayed_work(&__get_cpu_var(reap_work), REAPTIMEOUT_CPUC + smp_processor_id());
 		return;
