Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

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>
Signed-off-by: Christoph Hellwig <hch@lst.de>

authored by

Robin Murphy and committed by
Christoph Hellwig
b9bb694b a97740f8

-5
-5
drivers/iommu/io-pgtable-arm.c
··· 751 751 if (cfg->oas > ARM_LPAE_MAX_ADDR_BITS) 752 752 return NULL; 753 753 754 - if (!selftest_running && cfg->iommu_dev->dma_range_map) { 755 - dev_err(cfg->iommu_dev, "Cannot accommodate DMA offset for IOMMU page tables\n"); 756 - return NULL; 757 - } 758 - 759 754 data = kmalloc(sizeof(*data), GFP_KERNEL); 760 755 if (!data) 761 756 return NULL;