Re: [PATCH 01/40] scsi: iscsi: fix shost->max_id use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/3/21 4:22 PM, Mike Christie wrote:
> 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.
> 
> Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx>
> ---
>  drivers/scsi/be2iscsi/be_main.c  | 4 ++--
>  drivers/scsi/bnx2i/bnx2i_iscsi.c | 2 +-
>  drivers/scsi/cxgbi/libcxgbi.c    | 4 ++--
>  drivers/scsi/qedi/qedi_main.c    | 2 +-
>  4 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
> index 90fcddb76f46..56bd4441a789 100644
> --- a/drivers/scsi/be2iscsi/be_main.c
> +++ b/drivers/scsi/be2iscsi/be_main.c
> @@ -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) {
> diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c
> index 1e6d8f62ea3c..37f5b719050e 100644
> --- a/drivers/scsi/bnx2i/bnx2i_iscsi.c
> +++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c
> @@ -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;
> diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
> index f078b3c4e083..ecb134b4699f 100644
> --- a/drivers/scsi/cxgbi/libcxgbi.c
> +++ b/drivers/scsi/cxgbi/libcxgbi.c
> @@ -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;
>  
> diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
> index 47ad64b06623..0aa0061dad40 100644
> --- a/drivers/scsi/qedi/qedi_main.c
> +++ b/drivers/scsi/qedi/qedi_main.c
> @@ -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;
> 

Reviewed-by: Lee Duncan <lduncan@xxxxxxxx>




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux