[SCSI] lpfc 8.3.32: Correct null pointer Error in lpfc_sli.c
authorJames Smart <james.smart@emulex.com>
Tue, 12 Jun 2012 17:54:11 +0000 (13:54 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 20 Jul 2012 07:58:26 +0000 (08:58 +0100)
This patch corrects the issue caught via Smatch and reported by Dan Carpenter:
http://marc.info/?l=linux-scsi&m=133693516103343

Resolve null pointer check ordering that were odd

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/lpfc/lpfc_sli.c

index aace596..3e4f8ea 100644 (file)
@@ -15863,24 +15863,18 @@ lpfc_drain_txq(struct lpfc_hba *phba)
                spin_lock_irqsave(&phba->hbalock, iflags);
 
                piocbq = lpfc_sli_ringtx_get(phba, pring);
+               if (!piocbq) {
+                       spin_unlock_irqrestore(&phba->hbalock, iflags);
+                       lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
+                               "2823 txq empty and txq_cnt is %d\n ",
+                               pring->txq_cnt);
+                       break;
+               }
                sglq = __lpfc_sli_get_sglq(phba, piocbq);
                if (!sglq) {
                        __lpfc_sli_ringtx_put(phba, pring, piocbq);
                        spin_unlock_irqrestore(&phba->hbalock, iflags);
                        break;
-               } else {
-                       if (!piocbq) {
-                               /* The txq_cnt out of sync. This should
-                                * never happen
-                                */
-                               sglq = __lpfc_clear_active_sglq(phba,
-                                                sglq->sli4_lxritag);
-                               spin_unlock_irqrestore(&phba->hbalock, iflags);
-                               lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
-                                       "2823 txq empty and txq_cnt is %d\n ",
-                                       pring->txq_cnt);
-                               break;
-                       }
                }
 
                /* The xri and iocb resources secured,