mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 02:31:27 +00:00
qla2x00t-32gbit: Revert "Make sure that aborted commands are freed"
Calling vha->hw->tgt.tgt_ops->free_cmd() from qlt_xmit_response() is wrong and may trigger a kernel crash. Hence revert this patch. Reported-by: Chesnokov Gleb <Chesnokov.G@raidix.com> git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9366 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -3254,8 +3254,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
|
||||
if (!qpair->fw_started || (cmd->reset_count != qpair->chip_reset) ||
|
||||
(cmd->sess && cmd->sess->deleted)) {
|
||||
cmd->state = QLA_TGT_STATE_PROCESSED;
|
||||
res = 0;
|
||||
goto free;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ql_dbg_qp(ql_dbg_tgt, qpair, 0xe018,
|
||||
@@ -3266,8 +3265,9 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
|
||||
|
||||
res = qlt_pre_xmit_response(cmd, &prm, xmit_type, scsi_status,
|
||||
&full_req_cnt);
|
||||
if (unlikely(res != 0))
|
||||
goto free;
|
||||
if (unlikely(res != 0)) {
|
||||
return res;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(qpair->qp_lock_ptr, flags);
|
||||
|
||||
@@ -3287,8 +3287,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type,
|
||||
vha->flags.online, qla2x00_reset_active(vha),
|
||||
cmd->reset_count, qpair->chip_reset);
|
||||
spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
|
||||
res = 0;
|
||||
goto free;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Does F/W have an IOCBs for this request */
|
||||
@@ -3395,8 +3394,6 @@ out_unmap_unlock:
|
||||
qlt_unmap_sg(vha, cmd);
|
||||
spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
|
||||
|
||||
free:
|
||||
vha->hw->tgt.tgt_ops->free_cmd(cmd);
|
||||
return res;
|
||||
}
|
||||
EXPORT_SYMBOL(qlt_xmit_response);
|
||||
|
||||
Reference in New Issue
Block a user