• F
    swiotlb: use coherent_dma_mask in alloc_coherent · 1e74f300
    FUJITA Tomonori 提交于
    Impact: fix DMA buffer allocation coherency bug in certain configs
    
    This patch fixes swiotlb to use dev->coherent_dma_mask in
    swiotlb_alloc_coherent().
    
    coherent_dma_mask is a subset of dma_mask (equal to it most of
    the time), enumerating the address range that a given device
    is able to DMA to/from in a cache-coherent way.
    
    But currently, swiotlb uses dev->dma_mask in alloc_coherent()
    implicitly via address_needs_mapping(), but alloc_coherent is really
    supposed to use coherent_dma_mask.
    
    This bug could break drivers that uses smaller coherent_dma_mask than
    dma_mask (though the current code works for the majority that use the
    same mask for coherent_dma_mask and dma_mask).
    Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    Cc: tony.luck@intel.com
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    1e74f300
swiotlb.c 23.8 KB