scsi: hisi_sas: fix dma_unmap_sg() parameter
authorXiang Chen <chenxiang66@hisilicon.com>
Fri, 8 Dec 2017 17:16:33 +0000 (01:16 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 15 Dec 2017 02:25:02 +0000 (21:25 -0500)
For function dma_unmap_sg(), the <nents> parameter should be number of
elements in the scatterlist prior to the mapping, not after the mapping.

Fix this usage.

Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas_main.c

index 359ec52..d842530 100644 (file)
@@ -192,7 +192,8 @@ void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
 
                if (!sas_protocol_ata(task->task_proto))
                        if (slot->n_elem)
-                               dma_unmap_sg(dev, task->scatter, slot->n_elem,
+                               dma_unmap_sg(dev, task->scatter,
+                                            task->num_scatter,
                                             task->data_dir);
 
                if (sas_dev)
@@ -431,7 +432,8 @@ err_out:
        dev_err(dev, "task prep: failed[%d]!\n", rc);
        if (!sas_protocol_ata(task->task_proto))
                if (n_elem)
-                       dma_unmap_sg(dev, task->scatter, n_elem,
+                       dma_unmap_sg(dev, task->scatter,
+                                    task->num_scatter,
                                     task->data_dir);
 prep_out:
        return rc;