aboutsummaryrefslogtreecommitdiff
path: root/arch/i386/kernel/pci-dma.c
diff options
context:
space:
mode:
authorAmol Lad <amol@verismonetworks.com>2006-10-17 10:02:50 +0530
committerGreg Kroah-Hartman <gregkh@suse.de>2006-12-01 14:36:59 -0800
commit039d09a845209122c5193e650ab2d8b3c849ca7c (patch)
treeaf4574be60d590e166bf81057bbbbca2081ec4e9 /arch/i386/kernel/pci-dma.c
parent7edab2f0876ff6a38e10a88c9aca20180aad307c (diff)
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/i386/kernel/pci-dma.c')
-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 25fe6685393..5c8c6ef1fc5 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);