mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 01:51:34 +00:00
omap iommu: fix incorrect address for largepage 1st entry
There was a potential risk that the following "memset" could override its range if a given address was not the 1st entry of a largepage. This is not the case for "iovmm". Reported-by: Hari Nagalla <hnagalla@ti.com> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> Signed-off-by: Hari Nagalla <hnagalla@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
8d33ea5881
commit
c127c7dc1a
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* omap iommu: tlb and pagetable primitives
|
* omap iommu: tlb and pagetable primitives
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2009 Nokia Corporation
|
* Copyright (C) 2008-2010 Nokia Corporation
|
||||||
*
|
*
|
||||||
* Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
|
* Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
|
||||||
* Paul Mundt and Toshihiro Kobayashi
|
* Paul Mundt and Toshihiro Kobayashi
|
||||||
@ -646,7 +646,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
|
|||||||
if (*iopte & IOPTE_LARGE) {
|
if (*iopte & IOPTE_LARGE) {
|
||||||
nent *= 16;
|
nent *= 16;
|
||||||
/* rewind to the 1st entry */
|
/* rewind to the 1st entry */
|
||||||
iopte = (u32 *)((u32)iopte & IOLARGE_MASK);
|
iopte = iopte_offset(iopgd, (da & IOLARGE_MASK));
|
||||||
}
|
}
|
||||||
bytes *= nent;
|
bytes *= nent;
|
||||||
memset(iopte, 0, nent * sizeof(*iopte));
|
memset(iopte, 0, nent * sizeof(*iopte));
|
||||||
|
Loading…
Reference in New Issue
Block a user