summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi Doyu <hdoyu@nvidia.com>2013-04-03 11:55:28 +0300
committerHarshada Kale <hkale@nvidia.com>2013-06-10 03:47:44 -0700
commit0dfd32925e3b4ee6d4a8e574af1fc6a65ed849f5 (patch)
tree32051e5c559c8b2b852cbdd815dbe81afce05406
parentcf02b0d288d0ad9d2b27e6c808caf7062a53d9ae (diff)
iommu/tegra: smmu: Mask pagetable index correctly
Mask pagetable index to avoid overrun by removing unnecessary bit at first place. bug 1286500 Change-Id: I1bccd4d4b1c8510b540d7c0c60e1997ba63f952b (cherry picked from commit 88bc3c325df13f118ae5a3e492f713119a125e39) Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com> Reviewed-on: http://git-master/r/234119 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
-rw-r--r--drivers/iommu/tegra-smmu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
index 614807f1ae95..ad3e5a399e73 100644
--- a/drivers/iommu/tegra-smmu.c
+++ b/drivers/iommu/tegra-smmu.c
@@ -153,7 +153,7 @@ enum {
#define SMMU_PTE_SHIFT 12
#define SMMU_PFN_MASK 0x000fffff
-#define SMMU_ADDR_TO_PFN(addr) ((addr) >> 12)
+#define SMMU_ADDR_TO_PFN(addr) (((addr) >> 12) & (BIT(10) - 1))
#define SMMU_ADDR_TO_PDN(addr) ((addr) >> 22)
#define SMMU_PDN_TO_ADDR(pdn) ((pdn) << 22)
@@ -541,7 +541,7 @@ static unsigned long *locate_pte(struct smmu_as *as,
}
*count = &as->pte_count[pdn];
- return &ptbl[ptn % SMMU_PTBL_COUNT];
+ return &ptbl[ptn];
}
#ifdef CONFIG_SMMU_SIG_DEBUG