On Sep 9, 2015, at 9:07 PM, Jarod Wilson<jarod@xxxxxxxxxx> wrote:
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index e174fbb..a5e0022 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2823,7 +2823,8 @@ static void igb_remove(struct pci_dev *pdev)
igb_clear_interrupt_scheme(adapter);
- pci_iounmap(pdev, hw->hw_addr);
+ if (hw->hw_addr)
+ pci_iounmap(pdev, hw->hw_addr);
if (hw->flash_address)
iounmap(hw->flash_address);
pci_release_selected_regions(pdev,
I don't think that this is entirely the right solution. In ixgbe we
have a separate pointer, io_addr, used to manage the resource, so that
the space can be freed even after hw_addr is cleared. With the approach
above, the pci_iounmap will not ever be called on the space. You can see
how ixgbe is doing it.