Hello James Smart,
The patch 6e8e1c14c61e: "scsi: lpfc: Add WQ Full Logic for NVME
Target" from Jan 30, 2018, leads to the following static checker
warning:
drivers/scsi/lpfc/lpfc_nvmet.c:921 lpfc_nvmet_xmt_fcp_abort()
warn: inconsistent returns 'ctxp->ctxlock'.
drivers/scsi/lpfc/lpfc_nvmet.c
889 atomic_inc(&lpfc_nvmep->xmt_fcp_abort);
890
891 spin_lock_irqsave(&ctxp->ctxlock, flags);
892 ctxp->state = LPFC_NVMET_STE_ABORT;
893
894 /* Since iaab/iaar are NOT set, we need to check
895 * if the firmware is in process of aborting IO
896 */
897 if (ctxp->flag & LPFC_NVMET_XBUSY) {
898 spin_unlock_irqrestore(&ctxp->ctxlock, flags);
899 return;
900 }
901 ctxp->flag |= LPFC_NVMET_ABORT_OP;
902
903 if (ctxp->flag & LPFC_NVMET_DEFER_WQFULL) {
904 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid,
905 ctxp->oxid);
906 wq = phba->sli4_hba.nvme_wq[ctxp->wqeq->hba_wqidx];
907 lpfc_nvmet_wqfull_flush(phba, wq, ctxp);
908 return;
^^^^^^^
Missing unlock before this return.
909 }
910
911 /* An state of LPFC_NVMET_STE_RCV means we have just received
912 * the NVME command and have not started processing it.
913 * (by issuing any IO WQEs on this exchange yet)
914 */
915 if (ctxp->state == LPFC_NVMET_STE_RCV)
916 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid,
917 ctxp->oxid);
918 else
919 lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid,
920 ctxp->oxid);
921 spin_unlock_irqrestore(&ctxp->ctxlock, flags);
922 }
regards,
dan carpenter