mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 14:42:08 +02:00
iommupt: Check for missing PAGE_SIZE in the pgsize_bitmap
Sashiko pointed out that the driver could drop PAGE_SIZE from the
pgsize_bitmap. That is technically allowed but nothing does it, and
such an iommu_domain would not be used with the DMA API today.
Still, it is against the design and it is trivial to fix up. Lift
the PT_WARN_ON to the if branch and just skip the fast path.
Fixes: dcd6a011a8 ("iommupt: Add map_pages op")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Pranjal Shrivastava <praan@google.com>
Reviewed-by: Samiullah Khawaja <skhawaja@google.com>
Tested-by: Josua Mayer <josua@solid-run.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
0735c54804
commit
8ef3f77c44
|
|
@ -920,8 +920,8 @@ static int NS(map_range)(struct pt_iommu *iommu_table, dma_addr_t iova,
|
|||
return ret;
|
||||
|
||||
/* Calculate target page size and level for the leaves */
|
||||
if (pt_has_system_page_size(common) && len == PAGE_SIZE) {
|
||||
PT_WARN_ON(!(pgsize_bitmap & PAGE_SIZE));
|
||||
if (pt_has_system_page_size(common) && len == PAGE_SIZE &&
|
||||
likely(pgsize_bitmap & PAGE_SIZE)) {
|
||||
if (log2_mod(iova | paddr, PAGE_SHIFT))
|
||||
return -ENXIO;
|
||||
map.leaf_pgsize_lg2 = PAGE_SHIFT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user