diff options
| -rw-r--r-- | arch/arm/mach-bcmring/dma.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/arm/mach-bcmring/dma.c b/arch/arm/mach-bcmring/dma.c index 2ccf670ce1ac..29c0a911df26 100644 --- a/arch/arm/mach-bcmring/dma.c +++ b/arch/arm/mach-bcmring/dma.c | |||
| @@ -2221,11 +2221,15 @@ EXPORT_SYMBOL(dma_map_create_descriptor_ring); | |||
| 2221 | int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | 2221 | int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ |
| 2222 | int dirtied /* non-zero if any of the pages were modified */ | 2222 | int dirtied /* non-zero if any of the pages were modified */ |
| 2223 | ) { | 2223 | ) { |
| 2224 | |||
| 2225 | int rc = 0; | ||
| 2224 | int regionIdx; | 2226 | int regionIdx; |
| 2225 | int segmentIdx; | 2227 | int segmentIdx; |
| 2226 | DMA_Region_t *region; | 2228 | DMA_Region_t *region; |
| 2227 | DMA_Segment_t *segment; | 2229 | DMA_Segment_t *segment; |
| 2228 | 2230 | ||
| 2231 | down(&memMap->lock); | ||
| 2232 | |||
| 2229 | for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) { | 2233 | for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) { |
| 2230 | region = &memMap->region[regionIdx]; | 2234 | region = &memMap->region[regionIdx]; |
| 2231 | 2235 | ||
| @@ -2239,7 +2243,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
| 2239 | printk(KERN_ERR | 2243 | printk(KERN_ERR |
| 2240 | "%s: vmalloc'd pages are not yet supported\n", | 2244 | "%s: vmalloc'd pages are not yet supported\n", |
| 2241 | __func__); | 2245 | __func__); |
| 2242 | return -EINVAL; | 2246 | rc = -EINVAL; |
| 2247 | goto out; | ||
| 2243 | } | 2248 | } |
| 2244 | 2249 | ||
| 2245 | case DMA_MEM_TYPE_KMALLOC: | 2250 | case DMA_MEM_TYPE_KMALLOC: |
| @@ -2276,7 +2281,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
| 2276 | printk(KERN_ERR | 2281 | printk(KERN_ERR |
| 2277 | "%s: Unsupported memory type: %d\n", | 2282 | "%s: Unsupported memory type: %d\n", |
| 2278 | __func__, region->memType); | 2283 | __func__, region->memType); |
| 2279 | return -EINVAL; | 2284 | rc = -EINVAL; |
| 2285 | goto out; | ||
| 2280 | } | 2286 | } |
| 2281 | } | 2287 | } |
| 2282 | 2288 | ||
| @@ -2314,9 +2320,10 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */ | |||
| 2314 | memMap->numRegionsUsed = 0; | 2320 | memMap->numRegionsUsed = 0; |
| 2315 | memMap->inUse = 0; | 2321 | memMap->inUse = 0; |
| 2316 | 2322 | ||
| 2323 | out: | ||
| 2317 | up(&memMap->lock); | 2324 | up(&memMap->lock); |
| 2318 | 2325 | ||
| 2319 | return 0; | 2326 | return rc; |
| 2320 | } | 2327 | } |
| 2321 | 2328 | ||
| 2322 | EXPORT_SYMBOL(dma_unmap); | 2329 | EXPORT_SYMBOL(dma_unmap); |
