mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
scsi: lpfc: Cancel queued work for an IO when processing a received ABTS
When queued work is executed posting a new command to the transport the driver is reporting a null buffer. The driver had received an ABTS which matched a command that had been scheduled for delivery to the transport. The driver proceeded to cancel the command, but the work item was never cancelled. Fix by cancelling the queued work item. Also turns out the ABTS response was not properly sending a BA_ACC, so set the flag to send the ACC. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
51d23fb28c
commit
6594d31bab
@ -1766,6 +1766,7 @@ lpfc_nvmet_rcv_unsol_abort(struct lpfc_vport *vport,
|
||||
nvmet_fc_rcv_fcp_abort(phba->targetport,
|
||||
&ctxp->ctx.fcp_req);
|
||||
} else {
|
||||
cancel_work_sync(&ctxp->ctxbuf->defer_work);
|
||||
spin_lock_irqsave(&ctxp->ctxlock, iflag);
|
||||
lpfc_nvmet_defer_release(phba, ctxp);
|
||||
spin_unlock_irqrestore(&ctxp->ctxlock, iflag);
|
||||
@ -1777,7 +1778,7 @@ lpfc_nvmet_rcv_unsol_abort(struct lpfc_vport *vport,
|
||||
lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid,
|
||||
ctxp->oxid);
|
||||
|
||||
lpfc_sli4_seq_abort_rsp(vport, fc_hdr, 0);
|
||||
lpfc_sli4_seq_abort_rsp(vport, fc_hdr, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user