ieee1394: fix another deadlock in nodemgr
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 10 Feb 2007 21:06:18 +0000 (22:06 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 17 Feb 2007 13:41:18 +0000 (14:41 +0100)
A "modprobe ohci1394; sleep 1.5; modprobe -r ohci1394" could get stuck
in uninterruptible state, especially if an external node was connected.
http://bugzilla.kernel.org/show_bug.cgi?id=7792

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/ieee1394/nodemgr.c

index ba9faef..c5ace19 100644 (file)
@@ -1681,7 +1681,8 @@ static int nodemgr_host_thread(void *__hi)
        for (;;) {
                /* Sleep until next bus reset */
                set_current_state(TASK_INTERRUPTIBLE);
-               if (get_hpsb_generation(host) == generation)
+               if (get_hpsb_generation(host) == generation &&
+                   !kthread_should_stop())
                        schedule();
                __set_current_state(TASK_RUNNING);