mcmd->reset_count = ha->base_qpair->chip_reset;
        mcmd->tmr_func = QLA_TGT_ABTS;
        mcmd->qpair = ha->base_qpair;
+       mcmd->vha = vha;
 
        /*
         * LUN is looked up by target-core internally based on the passed
 static void qlt_24xx_send_task_mgmt_ctio(struct qla_qpair *qpair,
        struct qla_tgt_mgmt_cmd *mcmd, uint32_t resp_code)
 {
-       struct scsi_qla_host *ha = qpair->vha;
+       struct scsi_qla_host *ha = mcmd->vha;
        struct atio_from_isp *atio = &mcmd->orig_iocb.atio;
        struct ctio7_to_24xx *ctio;
        uint16_t temp;
 
        ql_dbg(ql_dbg_tgt, vha, 0xe009, "Sending TERM EXCH CTIO (ha=%p)\n", ha);
 
+       if (cmd)
+               vha = cmd->vha;
+
        pkt = (request_t *)qla2x00_alloc_iocbs_ready(qpair, NULL);
        if (pkt == NULL) {
                ql_dbg(ql_dbg_tgt, vha, 0xe050,
        mcmd->flags = flags;
        mcmd->reset_count = ha->base_qpair->chip_reset;
        mcmd->qpair = ha->base_qpair;
+       mcmd->vha = vha;
 
        switch (fn) {
        case QLA_TGT_LUN_RESET: