Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be816bc4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -377,6 +377,10 @@ scsi_alloc_host_cmd_pool(struct Scsi_Host *shost)
		pool->slab_flags |= SLAB_CACHE_DMA;
		pool->gfp_mask = __GFP_DMA;
	}

	if (hostt->cmd_size)
		hostt->cmd_pool = pool;

	return pool;
}

@@ -421,8 +425,10 @@ scsi_get_host_cmd_pool(struct Scsi_Host *shost)
out_free_slab:
	kmem_cache_destroy(pool->cmd_slab);
out_free_pool:
	if (hostt->cmd_size)
	if (hostt->cmd_size) {
		scsi_free_host_cmd_pool(pool);
		hostt->cmd_pool = NULL;
	}
	goto out;
}

@@ -444,8 +450,10 @@ static void scsi_put_host_cmd_pool(struct Scsi_Host *shost)
	if (!--pool->users) {
		kmem_cache_destroy(pool->cmd_slab);
		kmem_cache_destroy(pool->sense_slab);
		if (hostt->cmd_size)
		if (hostt->cmd_size) {
			scsi_free_host_cmd_pool(pool);
			hostt->cmd_pool = NULL;
		}
	}
	mutex_unlock(&host_cmd_pool_mutex);
}