Commit be816bc4 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
 "These are the two bug fixes I mentioned in the final merge window
  pull.  One is a reversed logic check in the device busy tests which
  can cause a nasty hang and another crash seen in the new SCSI pool
  support if the use count ever goes to zero"

[ The device busy test already got merged from a patch earlier, so is
  now duplicated.  ]

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  [SCSI] save command pool address of Scsi_Host
  [SCSI] fix qemu boot hang problem
parents 480cadc2 f6105c08
...@@ -377,6 +377,10 @@ scsi_alloc_host_cmd_pool(struct Scsi_Host *shost) ...@@ -377,6 +377,10 @@ scsi_alloc_host_cmd_pool(struct Scsi_Host *shost)
pool->slab_flags |= SLAB_CACHE_DMA; pool->slab_flags |= SLAB_CACHE_DMA;
pool->gfp_mask = __GFP_DMA; pool->gfp_mask = __GFP_DMA;
} }
if (hostt->cmd_size)
hostt->cmd_pool = pool;
return pool; return pool;
} }
...@@ -421,8 +425,10 @@ scsi_get_host_cmd_pool(struct Scsi_Host *shost) ...@@ -421,8 +425,10 @@ scsi_get_host_cmd_pool(struct Scsi_Host *shost)
out_free_slab: out_free_slab:
kmem_cache_destroy(pool->cmd_slab); kmem_cache_destroy(pool->cmd_slab);
out_free_pool: out_free_pool:
if (hostt->cmd_size) if (hostt->cmd_size) {
scsi_free_host_cmd_pool(pool); scsi_free_host_cmd_pool(pool);
hostt->cmd_pool = NULL;
}
goto out; goto out;
} }
...@@ -444,8 +450,10 @@ static void scsi_put_host_cmd_pool(struct Scsi_Host *shost) ...@@ -444,8 +450,10 @@ static void scsi_put_host_cmd_pool(struct Scsi_Host *shost)
if (!--pool->users) { if (!--pool->users) {
kmem_cache_destroy(pool->cmd_slab); kmem_cache_destroy(pool->cmd_slab);
kmem_cache_destroy(pool->sense_slab); kmem_cache_destroy(pool->sense_slab);
if (hostt->cmd_size) if (hostt->cmd_size) {
scsi_free_host_cmd_pool(pool); scsi_free_host_cmd_pool(pool);
hostt->cmd_pool = NULL;
}
} }
mutex_unlock(&host_cmd_pool_mutex); mutex_unlock(&host_cmd_pool_mutex);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment