lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 057/717] crypto: arm/aes-neonbs - fix usage of cbc(aes) fallback
    Date
    From: Horia Geantă <horia.geanta@nxp.com>

    [ Upstream commit a2715fbdc6fc387e85211df917a4778761ec693d ]

    Loading the module deadlocks since:
    -local cbc(aes) implementation needs a fallback and
    -crypto API tries to find one but the request_module() resolves back to
    the same module

    Fix this by changing the module alias for cbc(aes) and
    using the NEED_FALLBACK flag when requesting for a fallback algorithm.

    Fixes: 00b99ad2bac2 ("crypto: arm/aes-neonbs - Use generic cbc encryption path")
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/arm/crypto/aes-neonbs-glue.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/arch/arm/crypto/aes-neonbs-glue.c b/arch/arm/crypto/aes-neonbs-glue.c
    index bda8bf17631e1..f70af1d0514b9 100644
    --- a/arch/arm/crypto/aes-neonbs-glue.c
    +++ b/arch/arm/crypto/aes-neonbs-glue.c
    @@ -19,7 +19,7 @@ MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>");
    MODULE_LICENSE("GPL v2");

    MODULE_ALIAS_CRYPTO("ecb(aes)");
    -MODULE_ALIAS_CRYPTO("cbc(aes)");
    +MODULE_ALIAS_CRYPTO("cbc(aes)-all");
    MODULE_ALIAS_CRYPTO("ctr(aes)");
    MODULE_ALIAS_CRYPTO("xts(aes)");

    @@ -191,7 +191,8 @@ static int cbc_init(struct crypto_skcipher *tfm)
    struct aesbs_cbc_ctx *ctx = crypto_skcipher_ctx(tfm);
    unsigned int reqsize;

    - ctx->enc_tfm = crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC);
    + ctx->enc_tfm = crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC |
    + CRYPTO_ALG_NEED_FALLBACK);
    if (IS_ERR(ctx->enc_tfm))
    return PTR_ERR(ctx->enc_tfm);

    @@ -441,7 +442,8 @@ static struct skcipher_alg aes_algs[] = { {
    .base.cra_blocksize = AES_BLOCK_SIZE,
    .base.cra_ctxsize = sizeof(struct aesbs_cbc_ctx),
    .base.cra_module = THIS_MODULE,
    - .base.cra_flags = CRYPTO_ALG_INTERNAL,
    + .base.cra_flags = CRYPTO_ALG_INTERNAL |
    + CRYPTO_ALG_NEED_FALLBACK,

    .min_keysize = AES_MIN_KEY_SIZE,
    .max_keysize = AES_MAX_KEY_SIZE,
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:39    [W:4.124 / U:1.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site