swiotlb: Support aligned swiotlb buffers
authorDavid Stevens <stevensd@chromium.org>
Wed, 29 Sep 2021 02:32:59 +0000 (11:32 +0900)
committerJoerg Roedel <jroedel@suse.de>
Wed, 29 Sep 2021 10:50:34 +0000 (12:50 +0200)
commite81e99bacc9f9347bda7808a949c1ce9fcc2bbf4
treea32ae98bfc2d166e2eb38dff191cddee25e72d63
parent2e727bffbe93750a13d2414f3ce43de2f21600d2
swiotlb: Support aligned swiotlb buffers

Add an argument to swiotlb_tbl_map_single that specifies the desired
alignment of the allocated buffer. This is used by dma-iommu to ensure
the buffer is aligned to the iova granule size when using swiotlb with
untrusted sub-granule mappings. This addresses an issue where adjacent
slots could be exposed to the untrusted device if IO_TLB_SIZE < iova
granule < PAGE_SIZE.

Signed-off-by: David Stevens <stevensd@chromium.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210929023300.335969-7-stevensd@google.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dma-iommu.c
drivers/xen/swiotlb-xen.c
include/linux/swiotlb.h
kernel/dma/swiotlb.c