diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-01-17 18:34:51 -0500 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2007-01-17 18:34:51 -0500 |
commit | 9cdf083f981b8d37b3212400a359368661385099 (patch) | |
tree | aa15a6a08ad87e650dea40fb59b3180bef0d345b /arch/i386/kernel/pci-dma.c | |
parent | e499e01d234a31d59679b7b1e1cf628d917ba49a (diff) | |
parent | a8b3485287731978899ced11f24628c927890e78 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/i386/kernel/pci-dma.c')
-rw-r--r-- | arch/i386/kernel/pci-dma.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c index 25fe66853934..41af692c1584 100644 --- a/arch/i386/kernel/pci-dma.c +++ b/arch/i386/kernel/pci-dma.c | |||
@@ -75,7 +75,7 @@ EXPORT_SYMBOL(dma_free_coherent); | |||
75 | int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, | 75 | int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, |
76 | dma_addr_t device_addr, size_t size, int flags) | 76 | dma_addr_t device_addr, size_t size, int flags) |
77 | { | 77 | { |
78 | void __iomem *mem_base; | 78 | void __iomem *mem_base = NULL; |
79 | int pages = size >> PAGE_SHIFT; | 79 | int pages = size >> PAGE_SHIFT; |
80 | int bitmap_size = (pages + 31)/32; | 80 | int bitmap_size = (pages + 31)/32; |
81 | 81 | ||
@@ -92,14 +92,12 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, | |||
92 | if (!mem_base) | 92 | if (!mem_base) |
93 | goto out; | 93 | goto out; |
94 | 94 | ||
95 | dev->dma_mem = kmalloc(sizeof(struct dma_coherent_mem), GFP_KERNEL); | 95 | dev->dma_mem = kzalloc(sizeof(struct dma_coherent_mem), GFP_KERNEL); |
96 | if (!dev->dma_mem) | 96 | if (!dev->dma_mem) |
97 | goto out; | 97 | goto out; |
98 | memset(dev->dma_mem, 0, sizeof(struct dma_coherent_mem)); | 98 | dev->dma_mem->bitmap = kzalloc(bitmap_size, GFP_KERNEL); |
99 | dev->dma_mem->bitmap = kmalloc(bitmap_size, GFP_KERNEL); | ||
100 | if (!dev->dma_mem->bitmap) | 99 | if (!dev->dma_mem->bitmap) |
101 | goto free1_out; | 100 | goto free1_out; |
102 | memset(dev->dma_mem->bitmap, 0, bitmap_size); | ||
103 | 101 | ||
104 | dev->dma_mem->virt_base = mem_base; | 102 | dev->dma_mem->virt_base = mem_base; |
105 | dev->dma_mem->device_base = device_addr; | 103 | dev->dma_mem->device_base = device_addr; |
@@ -114,6 +112,8 @@ int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, | |||
114 | free1_out: | 112 | free1_out: |
115 | kfree(dev->dma_mem->bitmap); | 113 | kfree(dev->dma_mem->bitmap); |
116 | out: | 114 | out: |
115 | if (mem_base) | ||
116 | iounmap(mem_base); | ||
117 | return 0; | 117 | return 0; |
118 | } | 118 | } |
119 | EXPORT_SYMBOL(dma_declare_coherent_memory); | 119 | EXPORT_SYMBOL(dma_declare_coherent_memory); |