crypto: caam - defer aead_set_sh_desc in case of zero authsize
authorHoria Geantă <horia.geanta@nxp.com>
Thu, 4 Aug 2016 17:02:47 +0000 (20:02 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 8 Aug 2016 15:43:53 +0000 (23:43 +0800)
To be able to generate shared descriptors for AEAD, the authentication size
needs to be known. However, there is no imposed order of calling .setkey,
.setauthsize callbacks.

Thus, in case authentication size is not known at .setkey time, defer it
until .setauthsize is called.

The authsize != 0 check was incorrectly removed when converting the driver
to the new AEAD interface.

Cc: <stable@vger.kernel.org> # 4.3+
Fixes: 479bcc7c5b9e ("crypto: caam - Convert authenc to new AEAD interface")
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/caamalg.c

index e356005a721230da71a47301e9cd5abc395037e0..6dc597126b79e06e7410296576ef0705f8fe37ce 100644 (file)
@@ -441,6 +441,9 @@ static int aead_set_sh_desc(struct crypto_aead *aead)
                               OP_ALG_AAI_CTR_MOD128);
        const bool is_rfc3686 = alg->caam.rfc3686;
 
+       if (!ctx->authsize)
+               return 0;
+
        /* NULL encryption / decryption */
        if (!ctx->enckeylen)
                return aead_null_set_sh_desc(aead);