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

Will Deacon posted 5 patches 1 year, 11 months ago
There is a newer version of this series
drivers/iommu/dma-iommu.c |  8 ++++++++
kernel/dma/swiotlb.c      | 43 +++++++++++++++++++++++++++------------
2 files changed, 38 insertions(+), 13 deletions(-)
[PATCH v4 0/5] Fix double allocation in swiotlb_alloc()
Posted by Will Deacon 1 year, 11 months ago
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@kernel.org
v2: https://lore.kernel.org/r/20240131122543.14791-1-will@kernel.org
v3: https://lore.kernel.org/r/20240205190127.20685-1-will@kernel.org

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@lists.linux.dev
Cc: Christoph Hellwig <hch@lst.de>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Petr Tesarik <petr.tesarik1@huawei-partners.com>
Cc: Dexuan Cui <decui@microsoft.com>
Cc: Nicolin Chen <nicolinc@nvidia.com>
Cc: Michael Kelley <mhklinux@outlook.com>

--->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
Re: [PATCH v4 0/5] Fix double allocation in swiotlb_alloc()
Posted by Nicolin Chen 1 year, 11 months ago
On Wed, Feb 21, 2024 at 11:34:59AM +0000, Will Deacon wrote:
> 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@kernel.org
> v2: https://lore.kernel.org/r/20240131122543.14791-1-will@kernel.org
> v3: https://lore.kernel.org/r/20240205190127.20685-1-will@kernel.org
> 
> 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@lists.linux.dev
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> Cc: Robin Murphy <robin.murphy@arm.com>
> Cc: Petr Tesarik <petr.tesarik1@huawei-partners.com>
> Cc: Dexuan Cui <decui@microsoft.com>
> Cc: Nicolin Chen <nicolinc@nvidia.com>

This fixes the bug with NVME on arm64/SMMU when PAGE_SIZE=64KiB.

Tested-by: Nicolin Chen <nicolinc@nvidia.com>

Thanks!
Re: [PATCH v4 0/5] Fix double allocation in swiotlb_alloc()
Posted by Will Deacon 1 year, 11 months ago
On Fri, Feb 23, 2024 at 03:34:56AM -0800, Nicolin Chen wrote:
> On Wed, Feb 21, 2024 at 11:34:59AM +0000, Will Deacon wrote:
> > This is version four of the patches which I previously posted at:
> > 
> > v1: https://lore.kernel.org/r/20240126151956.10014-1-will@kernel.org
> > v2: https://lore.kernel.org/r/20240131122543.14791-1-will@kernel.org
> > v3: https://lore.kernel.org/r/20240205190127.20685-1-will@kernel.org
> > 
> > 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@lists.linux.dev
> > Cc: Christoph Hellwig <hch@lst.de>
> > Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> > Cc: Robin Murphy <robin.murphy@arm.com>
> > Cc: Petr Tesarik <petr.tesarik1@huawei-partners.com>
> > Cc: Dexuan Cui <decui@microsoft.com>
> > Cc: Nicolin Chen <nicolinc@nvidia.com>
> 
> This fixes the bug with NVME on arm64/SMMU when PAGE_SIZE=64KiB.
> 
> Tested-by: Nicolin Chen <nicolinc@nvidia.com>

Thanks, Nicolin! Please can you also respond to Michael's observation on
your patch (5/5)? I didn't think we needed anything extra there, but since
it's your patch I'd prefer to hear your opinion.

https://lore.kernel.org/lkml/SN6PR02MB4157828120FB7D3408CEC991D4572@SN6PR02MB4157.namprd02.prod.outlook.com/

Cheers,

Will