be2iscsi: Fix exposing Host in sysfs after adapter initialization is complete
authorJayamohan Kallickal <jayamohan.kallickal@emulex.com>
Tue, 6 May 2014 01:41:25 +0000 (21:41 -0400)
committerChristoph Hellwig <hch@lst.de>
Wed, 28 May 2014 16:13:14 +0000 (18:13 +0200)
 Before probe for function was completed, iSCSI Daemon had initiated login
 to target while OS was coming up. The targets which had node.startup=automatic,
 login process was initiated.Since function specific initialization was still in
 progress this lead to kernel panic.

 Fixed the issue by moving iscsi_host_add() call after adapter initialization
 is done.

Signed-off-by: John Soni Jose <sony.john-n@emulex.com>
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/be2iscsi/be_main.c

index 0d822297aa80d4bbc0c665f903ea1bf975ae5203..a73af296b29dbf5f2920586ee8991902cf214fe4 100644 (file)
@@ -599,15 +599,7 @@ static struct beiscsi_hba *beiscsi_hba_alloc(struct pci_dev *pcidev)
        pci_set_drvdata(pcidev, phba);
        phba->interface_handle = 0xFFFFFFFF;
 
-       if (iscsi_host_add(shost, &phba->pcidev->dev))
-               goto free_devices;
-
        return phba;
-
-free_devices:
-       pci_dev_put(phba->pcidev);
-       iscsi_host_free(phba->shost);
-       return NULL;
 }
 
 static void beiscsi_unmap_pci_function(struct beiscsi_hba *phba)
@@ -5621,6 +5613,9 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,
        }
        hwi_enable_intr(phba);
 
+       if (iscsi_host_add(phba->shost, &phba->pcidev->dev))
+               goto free_blkenbld;
+
        if (beiscsi_setup_boot_info(phba))
                /*
                 * log error but continue, because we may not be using