From: Hiroshi DOYU Date: Mon, 15 Feb 2010 18:03:32 +0000 (-0800) Subject: omap iommu: fix incorrect address for largepage 1st entry X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=c127c7dc1abb7f02dcfbbea173e7abb4f2d4585e;p=deliverable%2Flinux.git 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 Signed-off-by: Hiroshi DOYU Signed-off-by: Hari Nagalla Signed-off-by: Tony Lindgren --- diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c index e74811920668..905ed832df56 100644 --- a/arch/arm/plat-omap/iommu.c +++ b/arch/arm/plat-omap/iommu.c @@ -1,7 +1,7 @@ /* * omap iommu: tlb and pagetable primitives * - * Copyright (C) 2008-2009 Nokia Corporation + * Copyright (C) 2008-2010 Nokia Corporation * * Written by Hiroshi DOYU , * 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) { nent *= 16; /* rewind to the 1st entry */ - iopte = (u32 *)((u32)iopte & IOLARGE_MASK); + iopte = iopte_offset(iopgd, (da & IOLARGE_MASK)); } bytes *= nent; memset(iopte, 0, nent * sizeof(*iopte));