diff mbox series

iommu/io-pgtable-arm: Clean up faulty sanity check

Message ID daedc9364a19dc07487e4d07b8768b1e5934abd4.1600700881.git.robin.murphy@arm.com (mailing list archive)
State New, archived
Headers show
Series iommu/io-pgtable-arm: Clean up faulty sanity check | expand

Commit Message

Robin Murphy Sept. 21, 2020, 3:08 p.m. UTC
Checking for a nonzero dma_pfn_offset was a quick shortcut to validate
whether the DMA == phys assumption could hold at all. Checking for a
non-NULL dma_range_map is not quite equivalent, since a map may be
present to describe a limited DMA window even without an offset, and
thus this check can now yield false positives.

However, it only ever served to short-circuit going all the way through
to __arm_lpae_alloc_pages(), failing the canonical test there, and
having a bit more to clean up. As such, we can simply remove it without
loss of correctness.

Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
---
 drivers/iommu/io-pgtable-arm.c | 5 -----
 1 file changed, 5 deletions(-)

Comments

Christoph Hellwig Sept. 21, 2020, 4:09 p.m. UTC | #1
On Mon, Sep 21, 2020 at 04:08:01PM +0100, Robin Murphy wrote:
> Checking for a nonzero dma_pfn_offset was a quick shortcut to validate
> whether the DMA == phys assumption could hold at all. Checking for a
> non-NULL dma_range_map is not quite equivalent, since a map may be
> present to describe a limited DMA window even without an offset, and
> thus this check can now yield false positives.
> 
> However, it only ever served to short-circuit going all the way through
> to __arm_lpae_alloc_pages(), failing the canonical test there, and
> having a bit more to clean up. As such, we can simply remove it without
> loss of correctness.
> 
> Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Thanks,

applied to the dma-mapping for-next tree.
diff mbox series

Patch

diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
index d77e881516a4..f87cbb822a3d 100644
--- a/drivers/iommu/io-pgtable-arm.c
+++ b/drivers/iommu/io-pgtable-arm.c
@@ -751,11 +751,6 @@  arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg)
 	if (cfg->oas > ARM_LPAE_MAX_ADDR_BITS)
 		return NULL;
 
-	if (!selftest_running && cfg->iommu_dev->dma_range_map) {
-		dev_err(cfg->iommu_dev, "Cannot accommodate DMA offset for IOMMU page tables\n");
-		return NULL;
-	}
-
 	data = kmalloc(sizeof(*data), GFP_KERNEL);
 	if (!data)
 		return NULL;