mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
347815fcc6
commit
fa460b88e0
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue