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

crypto: atmel-aes - Reestablish the correct tfm context at dequeue

In case there were more requests from different tfms in the crypto
queue, only the context of the last initialized tfm was considered.

Fixes: ec2088b66f7a ("crypto: atmel-aes - Allocate aes dev at tfm init time")
Reported-by: Wolfgang Ocker <weo@reccoware.de>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Tudor Ambarus and committed by
Herbert Xu
6d48de65 fa55b7dc

+1 -5
+1 -5
drivers/crypto/atmel-aes.c
··· 960 960 ctx = crypto_tfm_ctx(areq->tfm); 961 961 962 962 dd->areq = areq; 963 + dd->ctx = ctx; 963 964 start_async = (areq != new_areq); 964 965 dd->is_async = start_async; 965 966 ··· 1275 1274 1276 1275 crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx)); 1277 1276 ctx->base.dd = dd; 1278 - ctx->base.dd->ctx = &ctx->base; 1279 1277 ctx->base.start = atmel_aes_start; 1280 1278 1281 1279 return 0; ··· 1291 1291 1292 1292 crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx)); 1293 1293 ctx->base.dd = dd; 1294 - ctx->base.dd->ctx = &ctx->base; 1295 1294 ctx->base.start = atmel_aes_ctr_start; 1296 1295 1297 1296 return 0; ··· 1782 1783 1783 1784 crypto_aead_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx)); 1784 1785 ctx->base.dd = dd; 1785 - ctx->base.dd->ctx = &ctx->base; 1786 1786 ctx->base.start = atmel_aes_gcm_start; 1787 1787 1788 1788 return 0; ··· 1925 1927 crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx) + 1926 1928 crypto_skcipher_reqsize(ctx->fallback_tfm)); 1927 1929 ctx->base.dd = dd; 1928 - ctx->base.dd->ctx = &ctx->base; 1929 1930 ctx->base.start = atmel_aes_xts_start; 1930 1931 1931 1932 return 0; ··· 2151 2154 crypto_aead_set_reqsize(tfm, (sizeof(struct atmel_aes_authenc_reqctx) + 2152 2155 auth_reqsize)); 2153 2156 ctx->base.dd = dd; 2154 - ctx->base.dd->ctx = &ctx->base; 2155 2157 ctx->base.start = atmel_aes_authenc_start; 2156 2158 2157 2159 return 0;