提交 fa460b88 编写于 作者: H Hiroshi DOYU

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: NHiroshi DOYU <Hiroshi.DOYU@nokia.com>
Cc: David Cohen <david.cohen@nokia.com>
Cc: Sakari Ailus <Sakari.Ailus@nokia.com>
上级 347815fc
...@@ -287,16 +287,16 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da, ...@@ -287,16 +287,16 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,
prev_end = 0; prev_end = 0;
list_for_each_entry(tmp, &obj->mmap, list) { 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; goto found;
if (flags & IOVMF_DA_ANON) if (flags & IOVMF_DA_ANON)
start = roundup(tmp->da_end, alignement); start = roundup(tmp->da_end + 1, alignement);
prev_end = tmp->da_end; prev_end = tmp->da_end;
} }
if ((start >= prev_end) && (ULONG_MAX - start >= bytes)) if ((start > prev_end) && (ULONG_MAX - start >= bytes))
goto found; goto found;
dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n", dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册