lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0157/1039] crypto: atmel-aes - Reestablish the correct tfm context at dequeue
    Date
    From: Tudor Ambarus <tudor.ambarus@microchip.com>

    [ Upstream commit 6d48de655917a9d782953eba65de4e3db593ddf0 ]

    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/crypto/atmel-aes.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    diff --git a/drivers/crypto/atmel-aes.c b/drivers/crypto/atmel-aes.c
    index 9391ccc03382d..fe05584031914 100644
    --- a/drivers/crypto/atmel-aes.c
    +++ b/drivers/crypto/atmel-aes.c
    @@ -960,6 +960,7 @@ static int atmel_aes_handle_queue(struct atmel_aes_dev *dd,
    ctx = crypto_tfm_ctx(areq->tfm);

    dd->areq = areq;
    + dd->ctx = ctx;
    start_async = (areq != new_areq);
    dd->is_async = start_async;

    @@ -1274,7 +1275,6 @@ static int atmel_aes_init_tfm(struct crypto_skcipher *tfm)

    crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx));
    ctx->base.dd = dd;
    - ctx->base.dd->ctx = &ctx->base;
    ctx->base.start = atmel_aes_start;

    return 0;
    @@ -1291,7 +1291,6 @@ static int atmel_aes_ctr_init_tfm(struct crypto_skcipher *tfm)

    crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx));
    ctx->base.dd = dd;
    - ctx->base.dd->ctx = &ctx->base;
    ctx->base.start = atmel_aes_ctr_start;

    return 0;
    @@ -1783,7 +1782,6 @@ static int atmel_aes_gcm_init(struct crypto_aead *tfm)

    crypto_aead_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx));
    ctx->base.dd = dd;
    - ctx->base.dd->ctx = &ctx->base;
    ctx->base.start = atmel_aes_gcm_start;

    return 0;
    @@ -1927,7 +1925,6 @@ static int atmel_aes_xts_init_tfm(struct crypto_skcipher *tfm)
    crypto_skcipher_set_reqsize(tfm, sizeof(struct atmel_aes_reqctx) +
    crypto_skcipher_reqsize(ctx->fallback_tfm));
    ctx->base.dd = dd;
    - ctx->base.dd->ctx = &ctx->base;
    ctx->base.start = atmel_aes_xts_start;

    return 0;
    @@ -2154,7 +2151,6 @@ static int atmel_aes_authenc_init_tfm(struct crypto_aead *tfm,
    crypto_aead_set_reqsize(tfm, (sizeof(struct atmel_aes_authenc_reqctx) +
    auth_reqsize));
    ctx->base.dd = dd;
    - ctx->base.dd->ctx = &ctx->base;
    ctx->base.start = atmel_aes_authenc_start;

    return 0;
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 23:09    [W:4.032 / U:0.904 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site