On 10/10/06, akpm@xxxxxxxx <akpm@xxxxxxxx> wrote:
From: Amol Lad <amol@xxxxxxxxxxxxxxxxxxx> ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. drivers/scsi/3w-9xxx.c | 5 +++++ 1 files 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); _
NAK... The second iounmap() call is placed incorrectly. __twa_shutdown() is called after that, and it still needs to use the registers. I'll roll a corrected patch into my next update. -Adam - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html