crypto: x86/aesni - Rearrange AES key size check
authorChang S. Bae <chang.seok.bae@intel.com>
Fri, 22 Mar 2024 23:04:58 +0000 (16:04 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 2 Apr 2024 02:49:39 +0000 (10:49 +0800)
aes_expandkey() already includes an AES key size check. If AES-NI is
unusable, invoke the function without the size check.

Also, use aes_check_keylen() instead of open code.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: linux-crypto@vger.kernel.org
Cc: x86@kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/aesni-intel_glue.c

index b1d90c25975afb8ac8e33db740efbae58d6f9294..8b3b17b065adb1240112f0cdd256d900e65840fd 100644 (file)
@@ -233,18 +233,16 @@ static int aes_set_key_common(struct crypto_aes_ctx *ctx,
 {
        int err;
 
-       if (key_len != AES_KEYSIZE_128 && key_len != AES_KEYSIZE_192 &&
-           key_len != AES_KEYSIZE_256)
-               return -EINVAL;
-
        if (!crypto_simd_usable())
-               err = aes_expandkey(ctx, in_key, key_len);
-       else {
-               kernel_fpu_begin();
-               err = aesni_set_key(ctx, in_key, key_len);
-               kernel_fpu_end();
-       }
+               return aes_expandkey(ctx, in_key, key_len);
 
+       err = aes_check_keylen(key_len);
+       if (err)
+               return err;
+
+       kernel_fpu_begin();
+       err = aesni_set_key(ctx, in_key, key_len);
+       kernel_fpu_end();
        return err;
 }