summaryrefslogtreecommitdiff
path: root/drivers/firewire/fw-device.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2007-03-07 12:12:48 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-03-09 22:03:11 +0100
commit2603bf219e9bef3396b96b65326de7db27958c95 (patch)
tree1e18057a1a7e4f22c0b7eaec1b3330ad426cdb72 /drivers/firewire/fw-device.c
parent2aaad97be6b58ae865f402fcd27d138e7346ff81 (diff)
downloadlwn-2603bf219e9bef3396b96b65326de7db27958c95.tar.gz
lwn-2603bf219e9bef3396b96b65326de7db27958c95.zip
firewire: Use only a wait queue and terminate poll and read on device removal.
Drop the event list semaphore and only use the wait queue and the list to synchronize queue access. Break out of a poll or read whenever the device is disconnected. Signed-off-by: Kristian Høgsberg <krh@redhat.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire/fw-device.c')
-rw-r--r--drivers/firewire/fw-device.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/firewire/fw-device.c b/drivers/firewire/fw-device.c
index 4ade867db888..4877cdbc58cc 100644
--- a/drivers/firewire/fw-device.c
+++ b/drivers/firewire/fw-device.c
@@ -453,6 +453,7 @@ static void fw_device_shutdown(struct work_struct *work)
idr_remove(&fw_device_idr, minor);
up_write(&fw_bus_type.subsys.rwsem);
+ fw_device_cdev_remove(device);
device_remove_file(&device->device, &config_rom_attribute);
device_for_each_child(&device->device, NULL, shutdown_unit);
device_unregister(&device->device);