scsi: lpfc: Fix oops when NVME Target is discovered in a nonNVME environment
authorDick Kennedy <dick.kennedy@broadcom.com>
Wed, 23 Aug 2017 23:55:33 +0000 (16:55 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 25 Aug 2017 02:29:36 +0000 (22:29 -0400)
lpfc oops when it discovers a NVME target but is configured for SCSI
only operation. Oops is in lpfc_nvme_register_port+0x33/0x300.

The localport is not valid so it should not have been referenced.

Added validity check for localport

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_nvme.c

index c18db8707fedfbdd204cd7f93d404c92b90b12f0..ce8d6bbf81485006def2e743bec44388cc4f4090 100644 (file)
@@ -2296,6 +2296,9 @@ lpfc_nvme_register_port(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
                         ndlp->nlp_DID, ndlp->nlp_type);
 
        localport = vport->localport;
+       if (!localport)
+               return 0;
+
        lport = (struct lpfc_nvme_lport *)localport->private;
 
        /* NVME rports are not preserved across devloss.