Description
In the Linux kernel, the following vulnerability has been resolved: dmaengine: dma-axi-dmac: use DMA pool to manange DMA descriptor For architectures like Microblaze or arm64 (where this IP is used), DMA_DIRECT_REMAP is set which means that dma_alloc_coherent() might remap (and hence vmalloc()) some memory. This became visible in a design where dma_direct_use_pool() is not possible. With the above, when calling dma_free_coherent(), vunmap() would be called from softirq context and thus leading to a BUG(). To fix it, use a dma pool that is allocated in .device_alloc_chan_resources() and allocate blocks from it. The key point is that now dma_pool_free() is used in axi_dmac_free_desc() to free the blocks and that just frees the blocks from the pool in the sense they can be used again. In other words, no actual call to dma_free_coherent() happens. That only happens when destroying the pool in axi_dmac_free_chan_resources() which does not happen in any interrupt context.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
3f8fd25936ee5f52596f10d420f650c5b5e3285f to < a4f41ceecfe68e117bae9c76c5ebc5e2b353fa56affected3f8fd25936ee5f52596f10d420f650c5b5e3285f to < c0e6bb2b0408fcac6382158ee2bd9fdc45eceee9affected3f8fd25936ee5f52596f10d420f650c5b5e3285f to < 65e82fa24965b2eb6ad9412f6c530ed9a50a625faffected3f8fd25936ee5f52596f10d420f650c5b5e3285f to < 9e942c8579130e62734c14338e9f451780669164affected
Linux Linux
Default version status: affected
6.8affected0 to < 6.8unaffected6.12.97 to ≤ 6.12.*unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected