resid = csol_cqe->res_cnt;
 
        if (!task->sc) {
-               if (io_task->scsi_cmnd)
+               if (io_task->scsi_cmnd) {
                        scsi_dma_unmap(io_task->scsi_cmnd);
+                       io_task->scsi_cmnd = NULL;
+               }
 
                return;
        }
                conn->rxdata_octets += resid;
 unmap:
        scsi_dma_unmap(io_task->scsi_cmnd);
+       io_task->scsi_cmnd = NULL;
        iscsi_complete_scsi_task(task, exp_cmdsn, max_cmdsn);
 }
 
                        spin_unlock(&phba->io_sgl_lock);
                        io_task->psgl_handle = NULL;
                }
+
+               if (io_task->scsi_cmnd) {
+                       scsi_dma_unmap(io_task->scsi_cmnd);
+                       io_task->scsi_cmnd = NULL;
+               }
        } else {
                if (!beiscsi_conn->login_in_progress)
                        beiscsi_free_mgmt_task_handles(beiscsi_conn, task);