Re: [PATCH 3/8] crypto4xx_core: don't abuse __dma_sync_page
From: Christian Lamparter <hidden>
Date: 2018-12-19 10:16:34
On Sunday, December 16, 2018 6:19:46 PM CET Christoph Hellwig wrote:
This function is internal to the DMA API implementation. Instead use the DMA API to properly unmap. Note that the DMA API usage in this driver is a disaster and urgently needs some work - it is missing all the unmaps, seems to do a secondary map where it looks like it should to a unmap in one place to work around cache coherency and the directions passed in seem to be partially wrong. Signed-off-by: Christoph Hellwig <hch@lst.de>
I've loaded the series (+dir -> direction patch) onto a cross-compiled vanilla 4.20-rc7. I can report that the box didn't crash, though I would have liked to test with DMA_DEBUG. Tested-by: Christian Lamparter <redacted>
quoted hunk ↗ jump to hunk
--- drivers/crypto/amcc/crypto4xx_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/crypto/amcc/crypto4xx_core.c b/drivers/crypto/amcc/crypto4xx_core.c index 6eaec9ba0f68..63cb6956c948 100644 --- a/drivers/crypto/amcc/crypto4xx_core.c +++ b/drivers/crypto/amcc/crypto4xx_core.c@@ -596,7 +596,7 @@ static void crypto4xx_aead_done(struct crypto4xx_device *dev, pd->pd_ctl_len.bf.pkt_len, dst); } else { - __dma_sync_page(sg_page(dst), dst->offset, dst->length, + dma_unmap_page(dev->core_dev->device, pd->dest, dst->length, DMA_FROM_DEVICE); }