On Mon, 2019-06-10 at 23:03 +0800, Ming Lei wrote:
> The current way isn't safe for chained sgl, so use sgl helper to
> operate sgl.
> 
> Signed-off-by: Ming Lei <[email protected]>
> ---
>  drivers/scsi/mvumi.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/scsi/mvumi.c b/drivers/scsi/mvumi.c
> index 1fb6f6ca627e..3881aa6bf4c4 100644
> --- a/drivers/scsi/mvumi.c
> +++ b/drivers/scsi/mvumi.c
> @@ -195,8 +195,7 @@ static int mvumi_make_sgl(struct mvumi_hba *mhba, struct 
> scsi_cmnd *scmd,
>       unsigned int sgnum = scsi_sg_count(scmd);
>       dma_addr_t busaddr;
>  
> -     sg = scsi_sglist(scmd);
> -     *sg_count = dma_map_sg(&mhba->pdev->dev, sg, sgnum,
> +     *sg_count = dma_map_sg(&mhba->pdev->dev, scsi_sglist(scmd), sgnum,
>                              scmd->sc_data_direction);
>       if (*sg_count > mhba->max_sge) {
>               dev_err(&mhba->pdev->dev,
> @@ -206,12 +205,12 @@ static int mvumi_make_sgl(struct mvumi_hba *mhba, 
> struct scsi_cmnd *scmd,
>                            scmd->sc_data_direction);
>               return -1;
>       }
> -     for (i = 0; i < *sg_count; i++) {
> -             busaddr = sg_dma_address(&sg[i]);
> +     scsi_for_each_sg(scmd, sg, *sg_count, i) {
> +             busaddr = sg_dma_address(sg);
>               m_sg->baseaddr_l = cpu_to_le32(lower_32_bits(busaddr));
>               m_sg->baseaddr_h = cpu_to_le32(upper_32_bits(busaddr));
>               m_sg->flags = 0;
> -             sgd_setsz(mhba, m_sg, cpu_to_le32(sg_dma_len(&sg[i])));
> +             sgd_setsz(mhba, m_sg, cpu_to_le32(sg_dma_len(sg)));
>               if ((i + 1) == *sg_count)
>                       m_sg->flags |= 1U << mhba->eot_flag;
>  

Reviewed-by: Ewan D. Milne <[email protected]>

Reply via email to