[PATCH] ARM: dma-mapping: fix calculation of iova bitmap size
Marek Szyprowski
m.szyprowski at samsung.com
Fri Mar 9 09:53:32 EST 2012
Fix calculation of iova address space for IOMMU-aware dma mapping.
Reported-by: Krishna Reddy <vdumpa at nvidia.com>
Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
---
arch/arm/mm/dma-mapping.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index ea5a0ad..f0f600a 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -1601,11 +1601,14 @@ struct dma_iommu_mapping *
arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size,
int order)
{
- unsigned int count = (size >> PAGE_SHIFT) - order;
+ unsigned int count = size >> (PAGE_SHIFT + order);
unsigned int bitmap_size = BITS_TO_LONGS(count) * sizeof(long);
struct dma_iommu_mapping *mapping;
int err = -ENOMEM;
+ if (!count)
+ return ERR_PTR(-EINVAL);
+
mapping = kzalloc(sizeof(struct dma_iommu_mapping), GFP_KERNEL);
if (!mapping)
goto err;
--
1.7.1.569.g6f426
More information about the linux-arm-kernel
mailing list