diff options
author | Arnd Bergmann <arnd@arndb.de> | 2016-02-29 09:45:59 +0100 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2016-02-29 16:44:24 +0100 |
commit | dbf6c6efa7dd9bea4db038ad7351b75615249046 (patch) | |
tree | 89a729ea43bf4aa50f77c3b2deb21b15dad69967 /drivers/iommu/exynos-iommu.c | |
parent | iommu/exynos: Support multiple attach_device calls (diff) | |
download | linux-dbf6c6efa7dd9bea4db038ad7351b75615249046.tar.xz linux-dbf6c6efa7dd9bea4db038ad7351b75615249046.zip |
iommu/exynos: Pointers are nto physical addresses
The exynos iommu driver changed an incorrect cast from pointer
to 'unsigned int' to an equally incorrect cast to a 'phys_addr_t',
which results in an obvious compile-time error when phys_addr_t
is wider than pointers are:
drivers/iommu/exynos-iommu.c: In function 'alloc_lv2entry':
drivers/iommu/exynos-iommu.c:918:32: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
The code does not actually want the physical address (which would
involve using virt_to_phys()), but just checks the alignment,
so we can change it to use a cast to uintptr_t instead.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 740a01eee9ad ("iommu/exynos: Add support for v5 SYSMMU")
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/exynos-iommu.c')
-rw-r--r-- | drivers/iommu/exynos-iommu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index b0665042bf29..484b3b37631f 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -915,7 +915,7 @@ static sysmmu_pte_t *alloc_lv2entry(struct exynos_iommu_domain *domain, bool need_flush_flpd_cache = lv1ent_zero(sent); pent = kmem_cache_zalloc(lv2table_kmem_cache, GFP_ATOMIC); - BUG_ON((phys_addr_t)pent & (LV2TABLE_SIZE - 1)); + BUG_ON((uintptr_t)pent & (LV2TABLE_SIZE - 1)); if (!pent) return ERR_PTR(-ENOMEM); |