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 1bf73262d84d30f9b9b1c48a0271334e6f384714..d188fb565a32cfb3d26b07e4a1224c6a8433f024 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);