diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2008-03-11 00:36:51 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-03-13 16:47:05 -0500 |
commit | 4b6f5b3a993cbe34b4280f252bccc76967c185c8 (patch) | |
tree | 2f7a0d8df682860c5863c0822b69fc3171c0cf82 /drivers/scsi | |
parent | 67951f63807328b81e45c3c87af049c55c0a0081 (diff) |
[SCSI] fix bsg queue oops with iscsi logout
Delay bsg unregistration, because we want to wait until all the request/cmds
have released their reference.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/scsi_sysfs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index ed83cdb6e67..b9b09a70458 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -294,6 +294,7 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work) } if (sdev->request_queue) { + bsg_unregister_queue(sdev->request_queue); sdev->request_queue->queuedata = NULL; /* user context needed to free queue */ scsi_free_queue(sdev->request_queue); @@ -857,7 +858,6 @@ void __scsi_remove_device(struct scsi_device *sdev) if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) return; - bsg_unregister_queue(sdev->request_queue); class_device_unregister(&sdev->sdev_classdev); transport_remove_device(dev); device_del(dev); |