diff -urpN --exclude-from=/home/davej/.exclude bk-linus/arch/i386/kernel/process.c linux-2.5/arch/i386/kernel/process.c
--- bk-linus/arch/i386/kernel/process.c	2002-11-21 02:09:30.000000000 +0000
+++ linux-2.5/arch/i386/kernel/process.c	2002-11-21 17:55:02.000000000 +0000
@@ -44,6 +44,7 @@
 #include <asm/ldt.h>
 #include <asm/processor.h>
 #include <asm/i387.h>
+#include <asm/irq.h>
 #include <asm/desc.h>
 #ifdef CONFIG_MATH_EMULATION
 #include <asm/math_emu.h>
@@ -269,6 +270,8 @@ void release_thread(struct task_struct *
 			BUG();
 		}
 	}
+
+	release_x86_irqs(dead_task);
 }
 
 /*
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/include/asm-i386/irq.h linux-2.5/include/asm-i386/irq.h
--- bk-linus/include/asm-i386/irq.h	2002-11-21 02:21:50.000000000 +0000
+++ linux-2.5/include/asm-i386/irq.h	2002-11-21 18:03:23.000000000 +0000
@@ -23,6 +23,7 @@ static __inline__ int irq_cannonicalize(
 extern void disable_irq(unsigned int);
 extern void disable_irq_nosync(unsigned int);
 extern void enable_irq(unsigned int);
+extern void release_x86_irqs(struct task_struct *);
 
 #ifdef CONFIG_X86_LOCAL_APIC
 #define ARCH_HAS_NMI_WATCHDOG		/* See include/linux/nmi.h */
