swiotlb: fail map correctly with failed io_tlb_default_mem
authorRobin Murphy <robin.murphy@arm.com>
Tue, 12 Jul 2022 06:46:45 +0000 (08:46 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 12 Jul 2022 06:47:31 +0000 (08:47 +0200)
In the failure case of trying to use a buffer which we'd previously
failed to allocate, the "!mem" condition is no longer sufficient since
io_tlb_default_mem became static and assigned by default. Update the
condition to work as intended per the rest of that conversion.

Fixes: 463e862ac63e ("swiotlb: Convert io_default_tlb_mem to static allocation")
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/dma/swiotlb.c

index 1758b72..909b434 100644 (file)
@@ -584,7 +584,7 @@ phys_addr_t swiotlb_tbl_map_single(struct device *dev, phys_addr_t orig_addr,
        int index;
        phys_addr_t tlb_addr;
 
-       if (!mem)
+       if (!mem || !mem->nslabs)
                panic("Can not allocate SWIOTLB buffer earlier and can't now provide you with the DMA bounce buffer");
 
        if (cc_platform_has(CC_ATTR_MEM_ENCRYPT))