/* Returns a fully allocated command with sense buffer and protection data buffer (where applicable) or NULL on failure  */
static struct scsi_cmnd* scsi_host_alloc_command(struct Scsi_Host *shost, gfp_t gfp_mask)
/* Returns a fully allocated command with sense buffer and protection data buffer (where applicable) or NULL on failure  */
static struct scsi_cmnd* scsi_host_alloc_command(struct Scsi_Host *shost, gfp_t gfp_mask)
{
	struct scsi_cmnd *cmd;
	cmd = scsi_pool_alloc_command(shost->cmd_pool, gfp_mask);
	if (!cmd)
		return NULL;
	if (scsi_host_get_prot(shost) >= SHOST_DIX_TYPE0_PROTECTION) {
		cmd->prot_sdb = kmem_cache_zalloc(scsi_sdb_cache, gfp_mask);
		if (!cmd->prot_sdb) {
			scsi_pool_free_command(shost->cmd_pool, cmd);
			return NULL;
		}
	}
	return cmd;
}