linux/drivers/firewire
Chris Boot 0278ccd9d5 firewire: sbp2: fix panic after rmmod with slow targets
If firewire-sbp2 starts a login to a target that doesn't complete ORBs
in a timely manner (and has to retry the login), and the module is
removed before the operation times out, you end up with a null-pointer
dereference and a kernel panic.

[SR:  This happens because sbp2_target_get/put() do not maintain
module references.  scsi_device_get/put() do, but at occasions like
Chris describes one, nobody holds a reference to an SBP-2 sdev.]

This patch cancels pending work for each unit in sbp2_remove(), which
hopefully means there are no extra references around that prevent us
from unloading. This fixes my crash.

Signed-off-by: Chris Boot <bootc@bootc.net>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
2011-08-23 00:44:35 +02:00
..
core-card.c firewire: sbp2: parallelize login, reconnect, logout 2011-05-10 22:53:46 +02:00
core-cdev.c firewire: cdev: fix 32 bit userland on 64 bit kernel compat corner cases 2011-08-12 15:30:08 +02:00
core-device.c firewire: core: handle ack_busy when fetching the Config ROM 2011-08-13 13:53:30 +02:00
core-iso.c firewire: optimize iso queueing by setting wake only after the last packet 2011-05-10 22:53:45 +02:00
core-topology.c firewire: core: fix card->reset_jiffies overflow 2011-01-23 12:31:01 +01:00
core-transaction.c firewire: sbp2: parallelize login, reconnect, logout 2011-05-10 22:53:46 +02:00
core.h firewire: sbp2: parallelize login, reconnect, logout 2011-05-10 22:53:46 +02:00
init_ohci1394_dma.c ieee1394: move init_ohci1394_dma to drivers/firewire/ 2010-10-11 14:48:03 +02:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2011-03-21 10:05:22 -07:00
Makefile ieee1394: move init_ohci1394_dma to drivers/firewire/ 2010-10-11 14:48:03 +02:00
net.c firewire: net: replacing deprecated __attribute__((packed)) with __packed 2011-06-02 13:58:33 +02:00
nosy-user.h firewire: nosy: endianess fixes and annotations 2010-07-27 11:04:11 +02:00
nosy.c firewire: nosy: char device is not seekable 2010-12-12 15:47:02 +01:00
nosy.h firewire: nosy: misc cleanups 2010-07-27 11:04:10 +02:00
ohci.c firewire: ohci: fix DMA unmapping in an error path 2011-08-12 15:30:08 +02:00
ohci.h firewire: ohci: fix TI TSB82AA2 regression since 2.6.35 2010-10-17 14:09:12 +02:00
sbp2.c firewire: sbp2: fix panic after rmmod with slow targets 2011-08-23 00:44:35 +02:00