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.

Cc: Xiangliang Yu <yuxia...@marvell.com>
Cc: Jeff Garzik <jgar...@pobox.com>
Fixes: 0b15fb1fd("[SCSI]mvsas: add support for Task collector mode and fixed 
relative
bugs")
Signed-off-by: Xiang Chen <chenxian...@hisilicon.com>
---
 drivers/scsi/mvsas/mv_sas.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index cff43bd..4b2cf36 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -848,7 +848,7 @@ static int mvs_task_prep(struct sas_task *task, struct 
mvs_info *mvi, int is_tmf
        dev_printk(KERN_ERR, mvi->dev, "mvsas prep failed[%d]!\n", rc);
        if (!sas_protocol_ata(task->task_proto))
                if (n_elem)
-                       dma_unmap_sg(mvi->dev, task->scatter, n_elem,
+                       dma_unmap_sg(mvi->dev, task->scatter, task->num_scatter,
                                     task->data_dir);
 prep_out:
        return rc;
@@ -899,7 +899,7 @@ static void mvs_slot_task_free(struct mvs_info *mvi, struct 
sas_task *task,
        if (!sas_protocol_ata(task->task_proto))
                if (slot->n_elem)
                        dma_unmap_sg(mvi->dev, task->scatter,
-                                    slot->n_elem, task->data_dir);
+                                    task->num_scatter, task->data_dir);
 
        switch (task->task_proto) {
        case SAS_PROTOCOL_SMP:
-- 
1.9.1

Reply via email to