aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic
diff options
context:
space:
mode:
authorSony Chacko <sony.chacko@qlogic.com>2013-05-21 05:26:59 -0400
committerDavid S. Miller <davem@davemloft.net>2013-05-22 17:52:39 -0400
commit02135582f38e977fd609a7e345d7beb8c9b1c71f (patch)
tree1095f16611ebe1ecede1ba06d6e568cc2adb439a /drivers/net/ethernet/qlogic
parentc2bba067660f71408548e9206bc9be27885a815c (diff)
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: Sony Chacko <sony.chacko@qlogic.com> Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic')
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 8fb836d4129f..9a7519faf057 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -2016,8 +2016,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2016 pci_enable_pcie_error_reporting(pdev); 2016 pci_enable_pcie_error_reporting(pdev);
2017 2017
2018 ahw = kzalloc(sizeof(struct qlcnic_hardware_context), GFP_KERNEL); 2018 ahw = kzalloc(sizeof(struct qlcnic_hardware_context), GFP_KERNEL);
2019 if (!ahw) 2019 if (!ahw) {
2020 err = -ENOMEM;
2020 goto err_out_free_res; 2021 goto err_out_free_res;
2022 }
2021 2023
2022 switch (ent->device) { 2024 switch (ent->device) {
2023 case PCI_DEVICE_ID_QLOGIC_QLE824X: 2025 case PCI_DEVICE_ID_QLOGIC_QLE824X:
@@ -2053,6 +2055,7 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2053 2055
2054 adapter->qlcnic_wq = create_singlethread_workqueue("qlcnic"); 2056 adapter->qlcnic_wq = create_singlethread_workqueue("qlcnic");
2055 if (adapter->qlcnic_wq == NULL) { 2057 if (adapter->qlcnic_wq == NULL) {
2058 err = -ENOMEM;
2056 dev_err(&pdev->dev, "Failed to create workqueue\n"); 2059 dev_err(&pdev->dev, "Failed to create workqueue\n");
2057 goto err_out_free_netdev; 2060 goto err_out_free_netdev;
2058 } 2061 }
@@ -2133,6 +2136,10 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2133 goto err_out_disable_msi; 2136 goto err_out_disable_msi;
2134 } 2137 }
2135 2138
2139 err = qlcnic_get_act_pci_func(adapter);
2140 if (err)
2141 goto err_out_disable_mbx_intr;
2142
2136 err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac); 2143 err = qlcnic_setup_netdev(adapter, netdev, pci_using_dac);
2137 if (err) 2144 if (err)
2138 goto err_out_disable_mbx_intr; 2145 goto err_out_disable_mbx_intr;
@@ -2162,9 +2169,6 @@ qlcnic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2162 break; 2169 break;
2163 } 2170 }
2164 2171
2165 if (qlcnic_get_act_pci_func(adapter))
2166 goto err_out_disable_mbx_intr;
2167
2168 if (adapter->drv_mac_learn) 2172 if (adapter->drv_mac_learn)
2169 qlcnic_alloc_lb_filters_mem(adapter); 2173 qlcnic_alloc_lb_filters_mem(adapter);
2170 2174