--- hub.c.orig	2003-01-15 00:33:21.000000000 +0100
+++ hub.c	2003-01-15 00:48:43.000000000 +0100
@@ -904,7 +904,7 @@
 
 static int usb_hub_thread(void *__hub)
 {
-	lock_kernel();
+	/*lock_kernel();*/
 
 	/*
 	 * This thread doesn't need any user-level access,
@@ -927,7 +927,7 @@
 
 	dbg("usb_hub_thread exiting");
 
-	unlock_kernel();
+	/*unlock_kernel(); */
 	complete_and_exit(&khubd_exited, 0);
 }
 
@@ -980,6 +980,12 @@
 
 	/* Kill the thread */
 	ret = kill_proc(khubd_pid, SIGTERM, 1);
+   
+        /* KLUDGE by cpbotha - on my machine, the damn thing doesn't want
+	 * to die, so let's kill -9 it! */
+        printk("hub.c: calling kill -9 on hub thread\n");
+   	wait_ms(100);
+   	ret = kill_proc(khubd_pid, SIGKILL, 1);
 
 	wait_for_completion(&khubd_exited);
 

