[PATCH v5 0/6] Fix double allocation in swiotlb_alloc()

From: Will Deacon
Date: Wed Feb 28 2024 - 08:39:46 EST


Hi all,

This is version five of the patches which I previously posted at:

v1: https://lore.kernel.org/r/20240126151956.10014-1-will@xxxxxxxxxx
v2: https://lore.kernel.org/r/20240131122543.14791-1-will@xxxxxxxxxx
v3: https://lore.kernel.org/r/20240205190127.20685-1-will@xxxxxxxxxx
v4: https://lore.kernel.org/r/20240221113504.7161-1-will@xxxxxxxxxx

Cheers again to everybody who helped to review and test the last
version.

Changes since v4 include:

- Remove unnecessary 'is_swiotlb_active()' from patch 5.
Nicolin: I didn't add your Tested-by because of this, so if you can
take it for another spin, that would be fantastic.

- New patch removing redundant stride adjustment for allocations
of PAGE_SIZE or more.

- Commit message tweaks and addition of tags from reviewers and
testers.

The final patch is a cleanup, so I'm happy to post it again after the
merge window if it doesn't make it this time around. The rest are fixes
and, even though patch five doesn't solve the general problem, it's
sufficient to fix NVME for Nicolin and is definitely an improvement over
what we currently have.

Thanks,

Will

Cc: iommu@xxxxxxxxxxxxxxx
Cc: Christoph Hellwig <hch@xxxxxx>
Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
Cc: Robin Murphy <robin.murphy@xxxxxxx>
Cc: Petr Tesarik <petr.tesarik1@xxxxxxxxxxxxxxxxxxx>
Cc: Dexuan Cui <decui@xxxxxxxxxxxxx>
Cc: Nicolin Chen <nicolinc@xxxxxxxxxx>
Cc: Michael Kelley <mhklinux@xxxxxxxxxxx>

--->8

Nicolin Chen (1):
iommu/dma: Force swiotlb_max_mapping_size on an untrusted device

Will Deacon (5):
swiotlb: Fix double-allocation of slots due to broken alignment
handling
swiotlb: Enforce page alignment in swiotlb_alloc()
swiotlb: Honour dma_alloc_coherent() alignment in swiotlb_alloc()
swiotlb: Fix alignment checks when both allocation and DMA masks are
present
swiotlb: Remove pointless stride adjustment for allocations >=
PAGE_SIZE

drivers/iommu/dma-iommu.c | 9 +++++++++
kernel/dma/swiotlb.c | 36 +++++++++++++++++++++++-------------
2 files changed, 32 insertions(+), 13 deletions(-)

--
2.44.0.rc1.240.g4c46232300-goog