Commit 02135582 authored by Sony Chacko's avatar Sony Chacko Committed by David S. Miller

qlcnic: Return proper error codes from probe failure paths

Fix error paths in probe to assign proper error codes to probe return value.
Signed-off-by: default avatarSony Chacko <sony.chacko@qlogic.com>
Signed-off-by: default avatarShahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c2bba067
...@@ -2016,8 +2016,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2016,8 +2016,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
pci_enable_pcie_error_reporting(pdev); pci_enable_pcie_error_reporting(pdev);
ahw = kzalloc(sizeof(struct qlcnic_hardware_context), GFP_KERNEL); ahw = kzalloc(sizeof(struct qlcnic_hardware_context), GFP_KERNEL);
if (!ahw) if (!ahw) {
err = -ENOMEM;
goto err_out_free_res; goto err_out_free_res;
}
switch (ent->device) { switch (ent->device) {
case PCI_DEVICE_ID_QLOGIC_QLE824X: case PCI_DEVICE_ID_QLOGIC_QLE824X:
...@@ -2053,6 +2055,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2053,6 +2055,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter->qlcnic_wq = create_singlethread_workqueue("qlcnic"); adapter->qlcnic_wq = create_singlethread_workqueue("qlcnic");
if (adapter->qlcnic_wq == NULL) { if (adapter->qlcnic_wq == NULL) {
err = -ENOMEM;
dev_err(&pdev->dev, "Failed to create workqueue\n"); dev_err(&pdev->dev, "Failed to create workqueue\n");
goto err_out_free_netdev; goto err_out_free_netdev;
} }
...@@ -2133,6 +2136,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2133,6 +2136,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto err_out_disable_msi; goto err_out_disable_msi;
} }
err = qlcnic_get_act_pci_func(adapter);
if (err)
goto err_out_disable_mbx_intr;
err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac); err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac);
if (err) if (err)
goto err_out_disable_mbx_intr; goto err_out_disable_mbx_intr;
...@@ -2162,9 +2169,6 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2162,9 +2169,6 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
break; break;
} }
if (qlcnic_get_act_pci_func(adapter))
goto err_out_disable_mbx_intr;
if (adapter->drv_mac_learn) if (adapter->drv_mac_learn)
qlcnic_alloc_lb_filters_mem(adapter); qlcnic_alloc_lb_filters_mem(adapter);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment