diff options
Diffstat (limited to 'drivers/scsi/hosts.c')
-rw-r--r-- | drivers/scsi/hosts.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index a3a056a9db67..593085a52275 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c | |||
@@ -42,7 +42,7 @@ | |||
42 | #include "scsi_logging.h" | 42 | #include "scsi_logging.h" |
43 | 43 | ||
44 | 44 | ||
45 | static atomic_t scsi_host_next_hn; /* host_no for next new host */ | 45 | static atomic_t scsi_host_next_hn = ATOMIC_INIT(0); /* host_no for next new host */ |
46 | 46 | ||
47 | 47 | ||
48 | static void scsi_host_cls_release(struct device *dev) | 48 | static void scsi_host_cls_release(struct device *dev) |
@@ -290,6 +290,7 @@ static void scsi_host_dev_release(struct device *dev) | |||
290 | struct Scsi_Host *shost = dev_to_shost(dev); | 290 | struct Scsi_Host *shost = dev_to_shost(dev); |
291 | struct device *parent = dev->parent; | 291 | struct device *parent = dev->parent; |
292 | struct request_queue *q; | 292 | struct request_queue *q; |
293 | void *queuedata; | ||
293 | 294 | ||
294 | scsi_proc_hostdir_rm(shost->hostt); | 295 | scsi_proc_hostdir_rm(shost->hostt); |
295 | 296 | ||
@@ -299,9 +300,9 @@ static void scsi_host_dev_release(struct device *dev) | |||
299 | destroy_workqueue(shost->work_q); | 300 | destroy_workqueue(shost->work_q); |
300 | q = shost->uspace_req_q; | 301 | q = shost->uspace_req_q; |
301 | if (q) { | 302 | if (q) { |
302 | kfree(q->queuedata); | 303 | queuedata = q->queuedata; |
303 | q->queuedata = NULL; | 304 | blk_cleanup_queue(q); |
304 | scsi_free_queue(q); | 305 | kfree(queuedata); |
305 | } | 306 | } |
306 | 307 | ||
307 | scsi_destroy_command_freelist(shost); | 308 | scsi_destroy_command_freelist(shost); |