diff options
author | Sony Chacko <sony.chacko@qlogic.com> | 2013-05-21 05:26:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-22 17:52:39 -0400 |
commit | 02135582f38e977fd609a7e345d7beb8c9b1c71f (patch) | |
tree | 1095f16611ebe1ecede1ba06d6e568cc2adb439a /drivers/net/ethernet/qlogic | |
parent | c2bba067660f71408548e9206bc9be27885a815c (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.c | 12 |
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 | ||