Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
[pandora-kernel.git] / arch / arm / plat-omap / iovmm.c
index 65c6d1f..e43983b 100644 (file)
@@ -287,16 +287,19 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
        prev_end = 0;
        list_for_each_entry(tmp, &obj->mmap, list) {
 
-               if ((prev_end <= start) && (start + bytes < tmp->da_start))
+               if (prev_end >= start)
+                       break;
+
+               if (start + bytes < tmp->da_start)
                        goto found;
 
                if (flags & IOVMF_DA_ANON)
-                       start = roundup(tmp->da_end, alignement);
+                       start = roundup(tmp->da_end + 1, alignement);
 
                prev_end = tmp->da_end;
        }
 
-       if ((start >= prev_end) && (ULONG_MAX - start >= bytes))
+       if ((start > prev_end) && (ULONG_MAX - start >= bytes))
                goto found;
 
        dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",