aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHiroshi DOYU <Hiroshi.DOYU@nokia.com>2010-05-06 16:10:18 +0300
committerHiroshi DOYU <Hiroshi.DOYU@nokia.com>2010-05-14 10:23:36 +0300
commitfa460b88e0cc2b4254271be2da49e68d748db727 (patch)
treefc69bc8bd5e0572690d0c65735b90135330e554d
parent347815fcc63ac4c4a975bf3ca2c889c2f843ae0d (diff)
downloadkernel_samsung_smdk4412-fa460b88e0cc2b4254271be2da49e68d748db727.zip
kernel_samsung_smdk4412-fa460b88e0cc2b4254271be2da49e68d748db727.tar.gz
kernel_samsung_smdk4412-fa460b88e0cc2b4254271be2da49e68d748db727.tar.bz2
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>
-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 65c6d1f..5afe013 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,
prev_end = 0;
list_for_each_entry(tmp, &obj->mmap, list) {
- if ((prev_end <= start) && (start + bytes < tmp->da_start))
+ if ((prev_end < start) && (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",