]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - drivers/scsi/lpfc/lpfc_sli.c
scsi: lpfc: fix oops/BUG in lpfc_sli_ringtxcmpl_put()
[mirror_ubuntu-zesty-kernel.git] / drivers / scsi / lpfc / lpfc_sli.c
index c5326055beee15bd9937f02c09e9f74aeec1fe6e..f4f77c5b0c83da0520eb868b79095f836179cecf 100644 (file)
@@ -1323,18 +1323,20 @@ lpfc_sli_ringtxcmpl_put(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
 {
        lockdep_assert_held(&phba->hbalock);
 
-       BUG_ON(!piocb || !piocb->vport);
+       BUG_ON(!piocb);
 
        list_add_tail(&piocb->list, &pring->txcmplq);
        piocb->iocb_flag |= LPFC_IO_ON_TXCMPLQ;
 
        if ((unlikely(pring->ringno == LPFC_ELS_RING)) &&
           (piocb->iocb.ulpCommand != CMD_ABORT_XRI_CN) &&
-          (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN) &&
-           (!(piocb->vport->load_flag & FC_UNLOADING)))
-               mod_timer(&piocb->vport->els_tmofunc,
-                         jiffies +
-                         msecs_to_jiffies(1000 * (phba->fc_ratov << 1)));
+          (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN)) {
+               BUG_ON(!piocb->vport);
+               if (!(piocb->vport->load_flag & FC_UNLOADING))
+                       mod_timer(&piocb->vport->els_tmofunc,
+                                 jiffies +
+                                 msecs_to_jiffies(1000 * (phba->fc_ratov << 1)));
+       }
 
        return 0;
 }