diff options
-rw-r--r-- | arch/arm/plat-omap/iovmm.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c index 8ce0de247c71..34f0012b5676 100644 --- a/arch/arm/plat-omap/iovmm.c +++ b/arch/arm/plat-omap/iovmm.c | |||
@@ -289,10 +289,10 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da, | |||
289 | prev_end = 0; | 289 | prev_end = 0; |
290 | list_for_each_entry(tmp, &obj->mmap, list) { | 290 | list_for_each_entry(tmp, &obj->mmap, list) { |
291 | 291 | ||
292 | if (prev_end >= start) | 292 | if (prev_end > start) |
293 | break; | 293 | break; |
294 | 294 | ||
295 | if (start + bytes < tmp->da_start) | 295 | if (start + bytes <= tmp->da_start) |
296 | goto found; | 296 | goto found; |
297 | 297 | ||
298 | if (flags & IOVMF_DA_ANON) | 298 | if (flags & IOVMF_DA_ANON) |
@@ -301,7 +301,7 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da, | |||
301 | prev_end = tmp->da_end; | 301 | prev_end = tmp->da_end; |
302 | } | 302 | } |
303 | 303 | ||
304 | if ((start > prev_end) && (ULONG_MAX - start >= bytes)) | 304 | if ((start >= prev_end) && (ULONG_MAX - start + 1 >= bytes)) |
305 | goto found; | 305 | goto found; |
306 | 306 | ||
307 | dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n", | 307 | dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n", |