scsi: lpfc: don't dereference localport before it has been null checked
authorColin Ian King <colin.king@canonical.com>
Fri, 22 Dec 2017 00:28:52 +0000 (00:28 +0000)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Jan 2018 03:52:43 +0000 (22:52 -0500)
localport is being dereferenced to assign lport and then immediately
afterwards localport is being sanity checked to see if it is null.  Fix
this by only dereferencing localport until after it has been null
checked.

Detected by CoverityScan, CID#1463038 ("Dereference before null check")

Fixes: 3a8cefbfc5ee ("scsi: lpfc: Beef up stat counters for debug")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_attr.c

index 1bf7326..d188fb5 100644 (file)
@@ -277,13 +277,13 @@ lpfc_nvme_info_show(struct device *dev, struct device_attribute *attr,
        }
 
        localport = vport->localport;
-       lport = (struct lpfc_nvme_lport *)localport->private;
        if (!localport) {
                len = snprintf(buf, PAGE_SIZE,
                                "NVME Initiator x%llx is not allocated\n",
                                wwn_to_u64(vport->fc_portname.u.wwn));
                return len;
        }
+       lport = (struct lpfc_nvme_lport *)localport->private;
        len = snprintf(buf, PAGE_SIZE, "NVME Initiator Enabled\n");
 
        spin_lock_irq(shost->host_lock);