igb: don't unmap NULL hw_addr
[deliverable/linux.git] / drivers / net / ethernet / intel / igb / igb_main.c
index ea7b098872456e5903bbfd5dead770eba52f69ef..061e1026af764234abeb19d07de25e9b4b1b68c1 100644 (file)
@@ -2294,9 +2294,11 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
 
        err = -EIO;
-       hw->hw_addr = pci_iomap(pdev, 0, 0);
-       if (!hw->hw_addr)
+       adapter->io_addr = pci_iomap(pdev, 0, 0);
+       if (!adapter->io_addr)
                goto err_ioremap;
+       /* hw->hw_addr can be altered, we'll use adapter->io_addr for unmap */
+       hw->hw_addr = adapter->io_addr;
 
        netdev->netdev_ops = &igb_netdev_ops;
        igb_set_ethtool_ops(netdev);
@@ -2656,7 +2658,7 @@ err_sw_init:
 #ifdef CONFIG_PCI_IOV
        igb_disable_sriov(pdev);
 #endif
-       pci_iounmap(pdev, hw->hw_addr);
+       pci_iounmap(pdev, adapter->io_addr);
 err_ioremap:
        free_netdev(netdev);
 err_alloc_etherdev:
@@ -2823,7 +2825,7 @@ static void igb_remove(struct pci_dev *pdev)
 
        igb_clear_interrupt_scheme(adapter);
 
-       pci_iounmap(pdev, hw->hw_addr);
+       pci_iounmap(pdev, adapter->io_addr);
        if (hw->flash_address)
                iounmap(hw->flash_address);
        pci_release_selected_regions(pdev,
This page took 0.02595 seconds and 5 git commands to generate.