PCI: arch/i386/kernel/pci-dma.c: ioremap balanced with iounmap
authorAmol Lad <amol@verismonetworks.com>
Tue, 17 Oct 2006 04:32:50 +0000 (10:02 +0530)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Dec 2006 22:36:59 +0000 (14:36 -0800)
ioremap must be balanced by an iounmap and failing to do so can result
in a memory leak.

Tested (compilation only):
- using allmodconfig
- making sure the files are compiling without any warning/error due to
new changes

Signed-off-by: Amol Lad <amol@verismonetworks.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/i386/kernel/pci-dma.c

index 25fe668..5c8c6ef 100644 (file)
@@ -75,7 +75,7 @@ EXPORT_SYMBOL(dma_free_coherent);
 int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
                                dma_addr_t device_addr, size_t size, int flags)
 {
-       void __iomem *mem_base;
+       void __iomem *mem_base = NULL;
        int pages = size >> PAGE_SHIFT;
        int bitmap_size = (pages + 31)/32;
 
@@ -114,6 +114,8 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
  free1_out:
        kfree(dev->dma_mem->bitmap);
  out:
+       if (mem_base)
+               iounmap(mem_base);
        return 0;
 }
 EXPORT_SYMBOL(dma_declare_coherent_memory);