summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAmol Lad <amol@verismonetworks.com>2006-10-17 08:32:50 +0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-12-02 01:36:59 +0300
commit039d09a845209122c5193e650ab2d8b3c849ca7c (patch)
treeaf4574be60d590e166bf81057bbbbca2081ec4e9 /arch
parent7edab2f0876ff6a38e10a88c9aca20180aad307c (diff)
downloadlinux-039d09a845209122c5193e650ab2d8b3c849ca7c.tar.xz
PCI: arch/i386/kernel/pci-dma.c: ioremap balanced with iounmap
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/pci-dma.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c
index 25fe66853934..5c8c6ef1fc5e 100644
--- a/arch/i386/kernel/pci-dma.c
+++ b/arch/i386/kernel/pci-dma.c
@@ -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);