mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:51:00 +07:00
scsi: iscsi: Fix shost->max_id use
[ Upstream commit bdd4aad7ff92ae39c2e93c415bb6761cb8b584da ] The iscsi offload drivers are setting the shost->max_id to the max number of sessions they support. The problem is that max_id is not the max number of targets but the highest identifier the targets can have. To use it to limit the number of targets we need to set it to max sessions - 1, or we can end up with a session we might not have preallocated resources for. Link: https://lore.kernel.org/r/20210525181821.7617-15-michael.christie@oracle.com Reviewed-by: Lee Duncan <lduncan@suse.com> Signed-off-by: Mike Christie <michael.christie@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
89812e7957
commit
fa7adae4b5
@ -416,7 +416,7 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev)
|
||||
"beiscsi_hba_alloc - iscsi_host_alloc failed\n");
|
||||
return NULL;
|
||||
}
|
||||
shost->max_id = BE2_MAX_SESSIONS;
|
||||
shost->max_id = BE2_MAX_SESSIONS - 1;
|
||||
shost->max_channel = 0;
|
||||
shost->max_cmd_len = BEISCSI_MAX_CMD_LEN;
|
||||
shost->max_lun = BEISCSI_NUM_MAX_LUN;
|
||||
@ -5318,7 +5318,7 @@ static int beiscsi_enable_port(struct beiscsi_hba *phba)
|
||||
/* Re-enable UER. If different TPE occurs then it is recoverable. */
|
||||
beiscsi_set_uer_feature(phba);
|
||||
|
||||
phba->shost->max_id = phba->params.cxns_per_ctrl;
|
||||
phba->shost->max_id = phba->params.cxns_per_ctrl - 1;
|
||||
phba->shost->can_queue = phba->params.ios_per_ctrl;
|
||||
ret = beiscsi_init_port(phba);
|
||||
if (ret < 0) {
|
||||
|
@ -791,7 +791,7 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic)
|
||||
return NULL;
|
||||
shost->dma_boundary = cnic->pcidev->dma_mask;
|
||||
shost->transportt = bnx2i_scsi_xport_template;
|
||||
shost->max_id = ISCSI_MAX_CONNS_PER_HBA;
|
||||
shost->max_id = ISCSI_MAX_CONNS_PER_HBA - 1;
|
||||
shost->max_channel = 0;
|
||||
shost->max_lun = 512;
|
||||
shost->max_cmd_len = 16;
|
||||
|
@ -337,7 +337,7 @@ void cxgbi_hbas_remove(struct cxgbi_device *cdev)
|
||||
EXPORT_SYMBOL_GPL(cxgbi_hbas_remove);
|
||||
|
||||
int cxgbi_hbas_add(struct cxgbi_device *cdev, u64 max_lun,
|
||||
unsigned int max_id, struct scsi_host_template *sht,
|
||||
unsigned int max_conns, struct scsi_host_template *sht,
|
||||
struct scsi_transport_template *stt)
|
||||
{
|
||||
struct cxgbi_hba *chba;
|
||||
@ -357,7 +357,7 @@ int cxgbi_hbas_add(struct cxgbi_device *cdev, u64 max_lun,
|
||||
|
||||
shost->transportt = stt;
|
||||
shost->max_lun = max_lun;
|
||||
shost->max_id = max_id;
|
||||
shost->max_id = max_conns - 1;
|
||||
shost->max_channel = 0;
|
||||
shost->max_cmd_len = SCSI_MAX_VARLEN_CDB_SIZE;
|
||||
|
||||
|
@ -642,7 +642,7 @@ static struct qedi_ctx *qedi_host_alloc(struct pci_dev *pdev)
|
||||
goto exit_setup_shost;
|
||||
}
|
||||
|
||||
shost->max_id = QEDI_MAX_ISCSI_CONNS_PER_HBA;
|
||||
shost->max_id = QEDI_MAX_ISCSI_CONNS_PER_HBA - 1;
|
||||
shost->max_channel = 0;
|
||||
shost->max_lun = ~0;
|
||||
shost->max_cmd_len = 16;
|
||||
|
Loading…
Reference in New Issue
Block a user