diff -ruN linux-2.4.25/fs/inode.c software-suspend-linux-2.4.25-rev1-test15/fs/inode.c
--- linux-2.4.25/fs/inode.c	2003-08-26 07:00:17.000000000 +1000
+++ software-suspend-linux-2.4.25-rev1-test15/fs/inode.c	2004-04-10 14:30:56.000000000 +1000
@@ -17,6 +17,7 @@
 #include <linux/swapctl.h>
 #include <linux/prefetch.h>
 #include <linux/locks.h>
+#include <linux/suspend.h>
 
 /*
  * New inode.c implementation.
@@ -1286,6 +1287,7 @@
 
 	daemonize();
 	strcpy(tsk->comm, "kinoded");
+	current->flags |= PF_SYNCTHREAD;
 
 	/* avoid getting signals */
 	spin_lock_irq(&tsk->sigmask_lock);
@@ -1299,13 +1306,18 @@
 	while(1) {
 	        wait_event_interruptible(kinoded_wait,
 	                                atomic_read(&kinoded_goal));
+		if (current->flags & PF_FREEZE)
+			refrigerator(PF_FREEZE);
 	        while((goal = atomic_read(&kinoded_goal))) {
 			_prune_icache(goal);
 			atomic_sub(goal, &kinoded_goal);
-			if (current->need_resched)
+			if (current->need_resched) {
 				schedule();
+				if (current->flags & PF_FREEZE)
+					refrigerator(PF_FREEZE);
+			}
 		}
-	} 
+	}
 }
 
 /*
