mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-12 01:20:14 +00:00
crypto: keembay - Fix dma_unmap_sg() nents value
The dma_unmap_sg() functions should be called with the same nents as the
dma_map_sg(), not the value the map function returned.
Fixes: 472b04444cd3 ("crypto: keembay - Add Keem Bay OCS HCU driver")
Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
522a242a18
commit
01951a7dc5
@ -68,6 +68,7 @@ struct ocs_hcu_ctx {
|
||||
* @sg_data_total: Total data in the SG list at any time.
|
||||
* @sg_data_offset: Offset into the data of the current individual SG node.
|
||||
* @sg_dma_nents: Number of sg entries mapped in dma_list.
|
||||
* @nents: Number of entries in the scatterlist.
|
||||
*/
|
||||
struct ocs_hcu_rctx {
|
||||
struct ocs_hcu_dev *hcu_dev;
|
||||
@ -91,6 +92,7 @@ struct ocs_hcu_rctx {
|
||||
unsigned int sg_data_total;
|
||||
unsigned int sg_data_offset;
|
||||
unsigned int sg_dma_nents;
|
||||
unsigned int nents;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -199,7 +201,7 @@ static void kmb_ocs_hcu_dma_cleanup(struct ahash_request *req,
|
||||
|
||||
/* Unmap req->src (if mapped). */
|
||||
if (rctx->sg_dma_nents) {
|
||||
dma_unmap_sg(dev, req->src, rctx->sg_dma_nents, DMA_TO_DEVICE);
|
||||
dma_unmap_sg(dev, req->src, rctx->nents, DMA_TO_DEVICE);
|
||||
rctx->sg_dma_nents = 0;
|
||||
}
|
||||
|
||||
@ -260,6 +262,10 @@ static int kmb_ocs_dma_prepare(struct ahash_request *req)
|
||||
rc = -ENOMEM;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Save the value of nents to pass to dma_unmap_sg. */
|
||||
rctx->nents = nents;
|
||||
|
||||
/*
|
||||
* The value returned by dma_map_sg() can be < nents; so update
|
||||
* nents accordingly.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user