Move iounmap and pci_release_region to tpci200_unregister(), as it is the place where the clean-up of the device is done. Also, renamed iounmap() to pci_iounmap() as the mapped region was requested from PCI bus. Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@xxxxxxxxxx> --- drivers/staging/ipack/bridges/tpci200.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/staging/ipack/bridges/tpci200.c b/drivers/staging/ipack/bridges/tpci200.c index 22e3da1..383571c 100644 --- a/drivers/staging/ipack/bridges/tpci200.c +++ b/drivers/staging/ipack/bridges/tpci200.c @@ -64,10 +64,12 @@ static void tpci200_unregister(struct tpci200_board *tpci200) pci_iounmap(tpci200->info->pdev, tpci200->info->interface_regs); pci_iounmap(tpci200->info->pdev, tpci200->info->ioidint_space); pci_iounmap(tpci200->info->pdev, tpci200->info->mem8_space); + pci_iounmap(tpci200->info->pdev, tpci200->info->cfg_regs); pci_release_region(tpci200->info->pdev, TPCI200_IP_INTERFACE_BAR); pci_release_region(tpci200->info->pdev, TPCI200_IO_ID_INT_SPACES_BAR); pci_release_region(tpci200->info->pdev, TPCI200_MEM8_SPACE_BAR); + pci_release_region(tpci200->info->pdev, TPCI200_CFG_MEM_BAR); pci_disable_device(tpci200->info->pdev); pci_dev_put(tpci200->info->pdev); @@ -750,9 +752,6 @@ static void __tpci200_pci_remove(struct tpci200_board *tpci200) tpci200_uninstall(tpci200); ipack_bus_unregister(tpci200->info->ipack_bus); - iounmap(tpci200->info->cfg_regs); - pci_release_region(tpci200->info->pdev, TPCI200_CFG_MEM_BAR); - kfree(tpci200->info); kfree(tpci200); } -- 1.7.10.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel