]> git.baikalelectronics.ru Git - kernel.git/commit
ieee1394: nodemgr: fix deadlock in shutdown
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Wed, 22 Nov 2006 20:09:42 +0000 (21:09 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Thu, 7 Dec 2006 22:10:23 +0000 (23:10 +0100)
commit0d0193694fe70a436090720d8fbe11ff82efcde6
treebb0d1adabbc6132a541d71dda9355e9e7243a7ad
parent9515702f81728a5eae07d92456c59cda079078ba
ieee1394: nodemgr: fix deadlock in shutdown

If "modprobe ohci1394" was quickly followed by "modprobe -r ohci1394",
say with 1 second pause in between, the modprobe -r got stuck in
uninterruptible sleep in kthread_stop.  At the same time the knodemgrd
slept uninterruptibly in bus_rescan_devices_helper.  That's because
driver_detach took the semaphore of the PCI device and
bus_rescan_devices_helper wanted to take the semaphore of the FireWire
host device's parent, which is the same semaphore. This was a regression
since Linux 2.6.16, commit 5dbb18f77bb3959653bf700ade9efa5f07c9c7b3,
"Hold the device's parent's lock during probe and remove".

The fix (or workaround) adds a dummy driver to the hpsb_host device. Now
bus_rescan_devices_helper won't scan the host device anymore.  This
doesn't hurt since we have no drivers which will bind to these devices
and it is unlikely that there will ever be such a driver.  The dummy
driver is befittingly presented as a representation of ieee1394 itself.

Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=6706
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/ieee1394/nodemgr.c