Merge 5.17-rc6 into char-misc-next
[linux-2.6-microblaze.git] / kernel / dma / swiotlb.c
index f1e7ea1..bfc56cb 100644 (file)
@@ -628,7 +628,8 @@ phys_addr_t swiotlb_tbl_map_single(struct device *dev, phys_addr_t orig_addr,
                mem->slots[index + i].orig_addr = slot_addr(orig_addr, i);
        tlb_addr = slot_addr(mem->start, index) + offset;
        if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC) &&
-           (dir == DMA_TO_DEVICE || dir == DMA_BIDIRECTIONAL))
+           (!(attrs & DMA_ATTR_OVERWRITE) || dir == DMA_TO_DEVICE ||
+           dir == DMA_BIDIRECTIONAL))
                swiotlb_bounce(dev, tlb_addr, mapping_size, DMA_TO_DEVICE);
        return tlb_addr;
 }