linux_dsm_epyc7002/drivers/ieee1394
Stefan Richter 8252bbb136 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 bf74ad5bc4,
"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>
2006-12-07 23:10:23 +01:00
..
.gitignore gitignore: misc files 2006-01-01 22:21:50 +01:00
config_roms.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
config_roms.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
csr1212.c ieee1394: add preprocessor constant for invalid csr address 2006-06-12 18:15:31 -04:00
csr1212.h ieee1394: add preprocessor constant for invalid csr address 2006-06-12 18:15:31 -04:00
csr.c ieee1394: usecs_to_jiffies takes unsigned int argument 2006-12-07 21:29:08 +01:00
csr.h [PATCH] ieee1394: clean up declarations of hpsb_*_config_rom 2006-07-03 12:02:31 -04:00
dma.c [PATCH] ieee1394: update #include directives in midlayer header files 2006-07-03 12:02:29 -04:00
dma.h [PATCH] ieee1394: update #include directives in midlayer header files 2006-07-03 12:02:29 -04:00
dv1394-private.h [PATCH] ieee1394: dv1394: sem2mutex conversion 2006-07-03 12:02:32 -04:00
dv1394.c ieee1394: dv1394: schedule for feature removal 2006-12-07 23:05:12 +01:00
dv1394.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
eth1394.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
eth1394.h ieee1394: add preprocessor constant for invalid csr address 2006-06-12 18:15:31 -04:00
highlevel.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
highlevel.h ieee1394: remove unused struct member from highlevel API 2006-12-07 21:20:30 +01:00
hosts.c ieee1394: handle sysfs errors 2006-12-07 21:29:57 +01:00
hosts.h WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
ieee1394_core.c ieee1394: safer definition of empty macros 2006-09-17 19:31:20 +02:00
ieee1394_core.h ieee1394: remove #include <asm/semaphore.h> 2006-09-17 19:18:50 +02:00
ieee1394_hotplug.h [PATCH] ieee1394: remove redundant code from ieee1394_hotplug.h 2006-07-03 12:02:30 -04:00
ieee1394_transactions.c ieee1394: shrink tlabel pools, remove tpool semaphores 2006-09-17 19:17:13 +02:00
ieee1394_transactions.h ieee1394: shrink tlabel pools, remove tpool semaphores 2006-09-17 19:17:13 +02:00
ieee1394_types.h ieee1394: safer definition of empty macros 2006-09-17 19:31:20 +02:00
ieee1394-ioctl.h [PATCH] ieee1394: coding style and comment fixes in midlayer header files 2006-07-03 12:02:28 -04:00
ieee1394.h [PATCH] ieee1394: coding style and comment fixes in midlayer header files 2006-07-03 12:02:28 -04:00
iso.c [PATCH] ieee1394: update #include directives in midlayer header files 2006-07-03 12:02:29 -04:00
iso.h [PATCH] ieee1394: update #include directives in midlayer header files 2006-07-03 12:02:29 -04:00
Kconfig ieee1394: schedule *_oui sysfs attributes for removal 2006-12-07 23:05:34 +01:00
Makefile ieee1394: only build OUI database files if config enabled 2006-12-07 21:32:29 +01:00
nodemgr.c ieee1394: nodemgr: fix deadlock in shutdown 2006-12-07 23:10:23 +01:00
nodemgr.h ieee1394: shrink tlabel pools, remove tpool semaphores 2006-09-17 19:17:13 +02:00
ohci1394.c ieee1394: ohci1394: call PMac code in shutdown only for proper machines 2006-12-07 23:04:35 +01:00
ohci1394.h ohci1394: set address range properties 2006-06-12 18:13:32 -04:00
oui2c.sh Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
oui.db Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pcilynx.c drivers/ieee1394/*: use kmemdup() 2006-12-07 21:43:02 +01:00
pcilynx.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
raw1394-private.h ieee1394: raw1394: add comments on lock usage 2006-12-07 21:28:06 +01:00
raw1394.c ieee1394: raw1394: defer feature removal of old isoch interface 2006-12-07 23:04:59 +01:00
raw1394.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sbp2.c ieee1394: sbp2: wrap two functions into one 2006-12-07 23:04:03 +01:00
sbp2.h sbp2: make 1bit bitfield unsigned 2006-12-07 23:05:47 +01:00
video1394.c video1394: remove BKL contention 2006-12-07 21:31:25 +01:00
video1394.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00