aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic
diff options
context:
space:
mode:
authorRajesh Borundia <rajesh.borundia@qlogic.com>2013-04-02 01:34:41 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-02 14:27:11 -0400
commitf1a094a83059b4677038befde6c4da6cfed31dbd (patch)
tree7a0b3c9d14bfc01b1d44a43c061f925b6646d92f /drivers/net/ethernet/qlogic
parentd8fe3436df256ce48d953dc342ac114e6e368476 (diff)
qlcnic: Fix NULL dereference in error path.
o Fix for smatch tool reported error drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c:2029 qlcnic_probe() error: potential NULL dereference 'adapter'. o While returning from an error path in probe, adapter is not initialized. So do not access adapter in cleanup path. Signed-off-by: Rajesh Borundia <rajesh.borundia@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.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 3ee593ee13cf..0d00b2bd2c81 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -546,11 +546,10 @@ void qlcnic_teardown_intr(struct qlcnic_adapter *adapter)
546 } 546 }
547} 547}
548 548
549static void 549static void qlcnic_cleanup_pci_map(struct qlcnic_hardware_context *ahw)
550qlcnic_cleanup_pci_map(struct qlcnic_adapter *adapter)
551{ 550{
552 if (adapter->ahw->pci_base0 != NULL) 551 if (ahw->pci_base0 != NULL)
553 iounmap(adapter->ahw->pci_base0); 552 iounmap(ahw->pci_base0);
554} 553}
555 554
556static int qlcnic_get_act_pci_func(struct qlcnic_adapter *adapter) 555static int qlcnic_get_act_pci_func(struct qlcnic_adapter *adapter)
@@ -2026,7 +2025,7 @@ err_out_free_netdev:
2026 free_netdev(netdev); 2025 free_netdev(netdev);
2027 2026
2028err_out_iounmap: 2027err_out_iounmap:
2029 qlcnic_cleanup_pci_map(adapter); 2028 qlcnic_cleanup_pci_map(ahw);
2030 2029
2031err_out_free_hw_res: 2030err_out_free_hw_res:
2032 kfree(ahw); 2031 kfree(ahw);
@@ -2083,7 +2082,7 @@ static void qlcnic_remove(struct pci_dev *pdev)
2083 2082
2084 qlcnic_remove_sysfs(adapter); 2083 qlcnic_remove_sysfs(adapter);
2085 2084
2086 qlcnic_cleanup_pci_map(adapter); 2085 qlcnic_cleanup_pci_map(adapter->ahw);
2087 2086
2088 qlcnic_release_firmware(adapter); 2087 qlcnic_release_firmware(adapter);
2089 2088