aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap/iovmm.c
diff options
context:
space:
mode:
authorHiroshi DOYU <Hiroshi.DOYU@nokia.com>2010-05-06 09:10:18 -0400
committerHiroshi DOYU <Hiroshi.DOYU@nokia.com>2010-05-14 03:23:36 -0400
commitfa460b88e0cc2b4254271be2da49e68d748db727 (patch)
treefc69bc8bd5e0572690d0c65735b90135330e554d /arch/arm/plat-omap/iovmm.c
parent347815fcc63ac4c4a975bf3ca2c889c2f843ae0d (diff)
omap iommu: Insert a gap page between IOVMAs against override
Inserting a gap page between IOVMAs could detect an override on other IOVMA with iommu fault. This was originally suggested by Sakari Ailus and based on the work and comment by David Cohen. Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> Cc: David Cohen <david.cohen@nokia.com> Cc: Sakari Ailus <Sakari.Ailus@nokia.com>
Diffstat (limited to 'arch/arm/plat-omap/iovmm.c')
-rw-r--r--arch/arm/plat-omap/iovmm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c
index 65c6d1ff723..5afe0135b97 100644
--- a/arch/arm/plat-omap/iovmm.c
+++ b/arch/arm/plat-omap/iovmm.c
@@ -287,16 +287,16 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
287 prev_end = 0; 287 prev_end = 0;
288 list_for_each_entry(tmp, &obj->mmap, list) { 288 list_for_each_entry(tmp, &obj->mmap, list) {
289 289
290 if ((prev_end <= start) && (start + bytes < tmp->da_start)) 290 if ((prev_end < start) && (start + bytes < tmp->da_start))
291 goto found; 291 goto found;
292 292
293 if (flags & IOVMF_DA_ANON) 293 if (flags & IOVMF_DA_ANON)
294 start = roundup(tmp->da_end, alignement); 294 start = roundup(tmp->da_end + 1, alignement);
295 295
296 prev_end = tmp->da_end; 296 prev_end = tmp->da_end;
297 } 297 }
298 298
299 if ((start >= prev_end) && (ULONG_MAX - start >= bytes)) 299 if ((start > prev_end) && (ULONG_MAX - start >= bytes))
300 goto found; 300 goto found;
301 301
302 dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n", 302 dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",