|
@@ -286,6 +286,7 @@ static void scsi_host_dev_release(struct device *dev)
|
|
|
{
|
|
|
struct Scsi_Host *shost = dev_to_shost(dev);
|
|
|
struct device *parent = dev->parent;
|
|
|
+ struct request_queue *q;
|
|
|
|
|
|
scsi_proc_hostdir_rm(shost->hostt);
|
|
|
|
|
@@ -293,9 +294,11 @@ static void scsi_host_dev_release(struct device *dev)
|
|
|
kthread_stop(shost->ehandler);
|
|
|
if (shost->work_q)
|
|
|
destroy_workqueue(shost->work_q);
|
|
|
- if (shost->uspace_req_q) {
|
|
|
- kfree(shost->uspace_req_q->queuedata);
|
|
|
- scsi_free_queue(shost->uspace_req_q);
|
|
|
+ q = shost->uspace_req_q;
|
|
|
+ if (q) {
|
|
|
+ kfree(q->queuedata);
|
|
|
+ q->queuedata = NULL;
|
|
|
+ scsi_free_queue(q);
|
|
|
}
|
|
|
|
|
|
scsi_destroy_command_freelist(shost);
|