From: Amol Lad ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Signed-off-by: Amol Lad Cc: James Bottomley Cc: adam radford Signed-off-by: Andrew Morton --- drivers/scsi/3w-9xxx.c | 5 +++++ 1 file changed, 5 insertions(+) diff -puN drivers/scsi/3w-9xxx.c~ioremap-balanced-with-iounmap-drivers-scsi-3w-9xxxc drivers/scsi/3w-9xxx.c --- a/drivers/scsi/3w-9xxx.c~ioremap-balanced-with-iounmap-drivers-scsi-3w-9xxxc +++ a/drivers/scsi/3w-9xxx.c @@ -2147,6 +2147,8 @@ out_remove_host: scsi_remove_host(host); out_release_mem_region: pci_release_regions(pdev); + if (tw_dev->base_addr) + iounmap(tw_dev->base_addr); out_free_device_extension: twa_free_device_extension(tw_dev); scsi_host_put(host); @@ -2173,6 +2175,9 @@ static void twa_remove(struct pci_dev *p /* Free up the IRQ */ free_irq(tw_dev->tw_pci_dev->irq, tw_dev); + /* Free IO mem */ + iounmap(tw_dev->base_addr); + /* Shutdown the card */ __twa_shutdown(tw_dev); _