Skip to content

Commit be6f98b

Browse files
horiaggregkh
authored andcommitted
crypto: caam - fix DMA mapping direction for RSA forms 2 & 3
commit f1bf9e6 upstream. Crypto engine needs some temporary locations in external memory for running RSA decrypt forms 2 and 3 (CRT). These are named "tmp1" and "tmp2" in the PDB. Update DMA mapping direction of tmp1 and tmp2 from TO_DEVICE to BIDIRECTIONAL, since engine needs r/w access. Cc: <stable@vger.kernel.org> # 4.13+ Fixes: 52e26d7 ("crypto: caam - add support for RSA key form 2") Fixes: 4a651b1 ("crypto: caam - add support for RSA key form 3") Signed-off-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 9f830cf commit be6f98b

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

drivers/crypto/caam/caampkc.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ static void rsa_priv_f2_unmap(struct device *dev, struct rsa_edesc *edesc,
7171
dma_unmap_single(dev, pdb->d_dma, key->d_sz, DMA_TO_DEVICE);
7272
dma_unmap_single(dev, pdb->p_dma, p_sz, DMA_TO_DEVICE);
7373
dma_unmap_single(dev, pdb->q_dma, q_sz, DMA_TO_DEVICE);
74-
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_TO_DEVICE);
75-
dma_unmap_single(dev, pdb->tmp2_dma, q_sz, DMA_TO_DEVICE);
74+
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_BIDIRECTIONAL);
75+
dma_unmap_single(dev, pdb->tmp2_dma, q_sz, DMA_BIDIRECTIONAL);
7676
}
7777

7878
static void rsa_priv_f3_unmap(struct device *dev, struct rsa_edesc *edesc,
@@ -90,8 +90,8 @@ static void rsa_priv_f3_unmap(struct device *dev, struct rsa_edesc *edesc,
9090
dma_unmap_single(dev, pdb->dp_dma, p_sz, DMA_TO_DEVICE);
9191
dma_unmap_single(dev, pdb->dq_dma, q_sz, DMA_TO_DEVICE);
9292
dma_unmap_single(dev, pdb->c_dma, p_sz, DMA_TO_DEVICE);
93-
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_TO_DEVICE);
94-
dma_unmap_single(dev, pdb->tmp2_dma, q_sz, DMA_TO_DEVICE);
93+
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_BIDIRECTIONAL);
94+
dma_unmap_single(dev, pdb->tmp2_dma, q_sz, DMA_BIDIRECTIONAL);
9595
}
9696

9797
/* RSA Job Completion handler */
@@ -417,13 +417,13 @@ static int set_rsa_priv_f2_pdb(struct akcipher_request *req,
417417
goto unmap_p;
418418
}
419419

420-
pdb->tmp1_dma = dma_map_single(dev, key->tmp1, p_sz, DMA_TO_DEVICE);
420+
pdb->tmp1_dma = dma_map_single(dev, key->tmp1, p_sz, DMA_BIDIRECTIONAL);
421421
if (dma_mapping_error(dev, pdb->tmp1_dma)) {
422422
dev_err(dev, "Unable to map RSA tmp1 memory\n");
423423
goto unmap_q;
424424
}
425425

426-
pdb->tmp2_dma = dma_map_single(dev, key->tmp2, q_sz, DMA_TO_DEVICE);
426+
pdb->tmp2_dma = dma_map_single(dev, key->tmp2, q_sz, DMA_BIDIRECTIONAL);
427427
if (dma_mapping_error(dev, pdb->tmp2_dma)) {
428428
dev_err(dev, "Unable to map RSA tmp2 memory\n");
429429
goto unmap_tmp1;
@@ -451,7 +451,7 @@ static int set_rsa_priv_f2_pdb(struct akcipher_request *req,
451451
return 0;
452452

453453
unmap_tmp1:
454-
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_TO_DEVICE);
454+
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_BIDIRECTIONAL);
455455
unmap_q:
456456
dma_unmap_single(dev, pdb->q_dma, q_sz, DMA_TO_DEVICE);
457457
unmap_p:
@@ -504,13 +504,13 @@ static int set_rsa_priv_f3_pdb(struct akcipher_request *req,
504504
goto unmap_dq;
505505
}
506506

507-
pdb->tmp1_dma = dma_map_single(dev, key->tmp1, p_sz, DMA_TO_DEVICE);
507+
pdb->tmp1_dma = dma_map_single(dev, key->tmp1, p_sz, DMA_BIDIRECTIONAL);
508508
if (dma_mapping_error(dev, pdb->tmp1_dma)) {
509509
dev_err(dev, "Unable to map RSA tmp1 memory\n");
510510
goto unmap_qinv;
511511
}
512512

513-
pdb->tmp2_dma = dma_map_single(dev, key->tmp2, q_sz, DMA_TO_DEVICE);
513+
pdb->tmp2_dma = dma_map_single(dev, key->tmp2, q_sz, DMA_BIDIRECTIONAL);
514514
if (dma_mapping_error(dev, pdb->tmp2_dma)) {
515515
dev_err(dev, "Unable to map RSA tmp2 memory\n");
516516
goto unmap_tmp1;
@@ -538,7 +538,7 @@ static int set_rsa_priv_f3_pdb(struct akcipher_request *req,
538538
return 0;
539539

540540
unmap_tmp1:
541-
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_TO_DEVICE);
541+
dma_unmap_single(dev, pdb->tmp1_dma, p_sz, DMA_BIDIRECTIONAL);
542542
unmap_qinv:
543543
dma_unmap_single(dev, pdb->c_dma, p_sz, DMA_TO_DEVICE);
544544
unmap_dq:

0 commit comments

Comments
 (0)