diff options
| author | Hiroshi DOYU <[email protected]> | 2010-05-06 16:10:18 +0300 |
|---|---|---|
| committer | Hiroshi DOYU <[email protected]> | 2010-05-14 10:23:36 +0300 |
| commit | fa460b88e0cc2b4254271be2da49e68d748db727 (patch) | |
| tree | fc69bc8bd5e0572690d0c65735b90135330e554d | |
| parent | 347815fcc63ac4c4a975bf3ca2c889c2f843ae0d (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 <[email protected]>
Cc: David Cohen <[email protected]>
Cc: Sakari Ailus <[email protected]>
| -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 65c6d1ff7237..5afe0135b979 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", |