Hi Marek,
On Tue, May 5, 2020 at 10:48 AM Marek Szyprowski m.szyprowski@samsung.com wrote:
The Documentation/DMA-API-HOWTO.txt states that dma_map_sg returns the numer of the created entries in the DMA address space. However the subsequent calls to dma_sync_sg_for_{device,cpu} and dma_unmap_sg must be called with the original number of the entries passed to dma_map_sg. The sg_table->nents in turn holds the result of the dma_map_sg call as stated in include/linux/scatterlist.h. A common mistake was to ignore a result of the dma_map_sg function and don't use the sg_table->orig_nents at all.
To avoid such issues, lets use common dma-mapping wrappers operating directly on the struct sg_table objects and adjust references to the nents and orig_nents respectively.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
For more information, see '[PATCH v3 00/25] DRM: fix struct sg_table nents vs. orig_nents misuse' thread: https://lkml.org/lkml/2020/5/5/187
For the modern lore-users: https://lore.kernel.org/r/20200505083926.28503-1-m.szyprowski@samsung.com/
Gr{oetje,eeting}s,
Geert