[PATCH v4 0/5] Fix double allocation in swiotlb_alloc()

From: Will Deacon
Date: Wed Feb 21 2024 - 06:35:20 EST


Hi again, folks,

This is version four 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

Thanks to Petr for his Reviewed-by tag on the first three.

Changes since v3 include:

- Use umax() instead of max() to fix a build warning if the first
patch is applied to older kernels which warn on signedness
mismatches.

- Add two new patches to the end of the series to resolve some
additional issues with NVME and 64KiB pages, reported by Nicolin.
I've added them to this series, as the first three patches make it
easier to fix this problem in the SWIOTLB code.

- Add Reviewed-by tags from Petr

Cheers,

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 (4):
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

drivers/iommu/dma-iommu.c | 8 ++++++++
kernel/dma/swiotlb.c | 43 +++++++++++++++++++++++++++------------
2 files changed, 38 insertions(+), 13 deletions(-)

--
2.44.0.rc0.258.g7320e95886-goog