Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: ccree - only try to map auth tag if needed

Make sure to only add the size of the auth tag to the source mapping
for encryption if it is an in-place operation. Failing to do this
previously caused us to try and map auth size len bytes from a NULL
mapping and crashing if both the cryptlen and assoclen are zero.

Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Cc: stable@vger.kernel.org # v4.19+
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Gilad Ben-Yossef and committed by
Herbert Xu
504e84ab ce0fc6db

+4 -2
+4 -2
drivers/crypto/ccree/cc_buffer_mgr.c
··· 1109 1109 } 1110 1110 1111 1111 size_to_map = req->cryptlen + areq_ctx->assoclen; 1112 - if (areq_ctx->gen_ctx.op_type == DRV_CRYPTO_DIRECTION_ENCRYPT) 1112 + /* If we do in-place encryption, we also need the auth tag */ 1113 + if ((areq_ctx->gen_ctx.op_type == DRV_CRYPTO_DIRECTION_ENCRYPT) && 1114 + (req->src == req->dst)) { 1113 1115 size_to_map += authsize; 1114 - 1116 + } 1115 1117 if (is_gcm4543) 1116 1118 size_to_map += crypto_aead_ivsize(tfm); 1117 1119 rc = cc_map_sg(dev, req->src, size_to_map, DMA_BIDIRECTIONAL,