• Stefan Richter's avatar
    ieee1394: nodemgr: fix deadlock in shutdown · 8252bbb1
    Stefan Richter authored
    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 bf74ad5b,
    "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=6706Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    8252bbb1
nodemgr.c 53.9 KB