scsi: megaraid_sas: Use SMID for Task abort case only
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Wed, 23 Aug 2017 11:47:02 +0000 (04:47 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 25 Aug 2017 02:29:13 +0000 (22:29 -0400)
In TM code, smid_task is valid only in case of task aborts.

Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas_fusion.c

index 6efa72a7ed5f82947378218d69fddd61a626ffd2..6da1663ddb548211f93f9a21b09c1a71cadf295d 100644 (file)
@@ -3760,7 +3760,7 @@ megasas_issue_tm(struct megasas_instance *instance, u16 device_handle,
        struct megasas_cmd_fusion *cmd_fusion;
        struct megasas_cmd *cmd_mfi;
        union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc;
-       struct fusion_context *fusion;
+       struct fusion_context *fusion = NULL;
        struct megasas_cmd_fusion *scsi_lookup;
        int rc;
        struct MPI2_SCSI_TASK_MANAGE_REPLY *mpi_reply;
@@ -3787,8 +3787,6 @@ megasas_issue_tm(struct megasas_instance *instance, u16 device_handle,
        cmd_fusion->request_desc = req_desc;
        req_desc->Words = 0;
 
-       scsi_lookup = fusion->cmd_list[smid_task - 1];
-
        mr_request = (struct MR_TASK_MANAGE_REQUEST *) cmd_fusion->io_request;
        memset(mr_request, 0, sizeof(struct MR_TASK_MANAGE_REQUEST));
        mpi_request = (struct MPI2_SCSI_TASK_MANAGE_REQUEST *) &mr_request->TmRequest;
@@ -3835,6 +3833,8 @@ megasas_issue_tm(struct megasas_instance *instance, u16 device_handle,
        rc = SUCCESS;
        switch (type) {
        case MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK:
+               scsi_lookup = fusion->cmd_list[smid_task - 1];
+
                if (scsi_lookup->scmd == NULL)
                        break;
                else {