Now that kernel mode NEON is guaranteed to be available both in process
and in softirq context, we no longer have a need for the SIMD helper or
for non-SIMD fallbacks, given that the skcipher API is not supported in
any other context anyway. So drop this code.

Signed-off-by: Ard Biesheuvel <a...@kernel.org>
---
 arch/arm/crypto/aes-neonbs-glue.c | 119 ++------------------
 1 file changed, 9 insertions(+), 110 deletions(-)

diff --git a/arch/arm/crypto/aes-neonbs-glue.c 
b/arch/arm/crypto/aes-neonbs-glue.c
index f7b2229949a4..7de7a10a9089 100644
--- a/arch/arm/crypto/aes-neonbs-glue.c
+++ b/arch/arm/crypto/aes-neonbs-glue.c
@@ -6,11 +6,9 @@
  */
 
 #include <asm/neon.h>
-#include <asm/simd.h>
 #include <crypto/aes.h>
 #include <crypto/ctr.h>
 #include <crypto/internal/cipher.h>
-#include <crypto/internal/simd.h>
 #include <crypto/internal/skcipher.h>
 #include <crypto/scatterwalk.h>
 #include <crypto/xts.h>
@@ -212,25 +210,6 @@ static void cbc_exit(struct crypto_skcipher *tfm)
        crypto_free_skcipher(ctx->enc_tfm);
 }
 
-static int aesbs_ctr_setkey_sync(struct crypto_skcipher *tfm, const u8 *in_key,
-                                unsigned int key_len)
-{
-       struct aesbs_ctr_ctx *ctx = crypto_skcipher_ctx(tfm);
-       int err;
-
-       err = aes_expandkey(&ctx->fallback, in_key, key_len);
-       if (err)
-               return err;
-
-       ctx->key.rounds = 6 + key_len / 4;
-
-       kernel_neon_begin();
-       aesbs_convert_key(ctx->key.rk, ctx->fallback.key_enc, ctx->key.rounds);
-       kernel_neon_end();
-
-       return 0;
-}
-
 static int ctr_encrypt(struct skcipher_request *req)
 {
        struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
@@ -273,29 +252,6 @@ static int ctr_encrypt(struct skcipher_request *req)
        return err;
 }
 
-static void ctr_encrypt_one(struct crypto_skcipher *tfm, const u8 *src, u8 
*dst)
-{
-       struct aesbs_ctr_ctx *ctx = crypto_skcipher_ctx(tfm);
-       unsigned long flags;
-
-       /*
-        * Temporarily disable interrupts to avoid races where
-        * cachelines are evicted when the CPU is interrupted
-        * to do something else.
-        */
-       local_irq_save(flags);
-       aes_encrypt(&ctx->fallback, dst, src);
-       local_irq_restore(flags);
-}
-
-static int ctr_encrypt_sync(struct skcipher_request *req)
-{
-       if (!crypto_simd_usable())
-               return crypto_ctr_encrypt_walk(req, ctr_encrypt_one);
-
-       return ctr_encrypt(req);
-}
-
 static int aesbs_xts_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
                            unsigned int key_len)
 {
@@ -423,13 +379,12 @@ static int xts_decrypt(struct skcipher_request *req)
 }
 
 static struct skcipher_alg aes_algs[] = { {
-       .base.cra_name          = "__ecb(aes)",
-       .base.cra_driver_name   = "__ecb-aes-neonbs",
+       .base.cra_name          = "ecb(aes)",
+       .base.cra_driver_name   = "ecb-aes-neonbs",
        .base.cra_priority      = 250,
        .base.cra_blocksize     = AES_BLOCK_SIZE,
        .base.cra_ctxsize       = sizeof(struct aesbs_ctx),
        .base.cra_module        = THIS_MODULE,
-       .base.cra_flags         = CRYPTO_ALG_INTERNAL,
 
        .min_keysize            = AES_MIN_KEY_SIZE,
        .max_keysize            = AES_MAX_KEY_SIZE,
@@ -438,13 +393,12 @@ static struct skcipher_alg aes_algs[] = { {
        .encrypt                = ecb_encrypt,
        .decrypt                = ecb_decrypt,
 }, {
-       .base.cra_name          = "__cbc(aes)",
-       .base.cra_driver_name   = "__cbc-aes-neonbs",
+       .base.cra_name          = "cbc(aes)",
+       .base.cra_driver_name   = "cbc-aes-neonbs",
        .base.cra_priority      = 250,
        .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,
 
        .min_keysize            = AES_MIN_KEY_SIZE,
        .max_keysize            = AES_MAX_KEY_SIZE,
@@ -456,13 +410,12 @@ static struct skcipher_alg aes_algs[] = { {
        .init                   = cbc_init,
        .exit                   = cbc_exit,
 }, {
-       .base.cra_name          = "__ctr(aes)",
-       .base.cra_driver_name   = "__ctr-aes-neonbs",
+       .base.cra_name          = "ctr(aes)",
+       .base.cra_driver_name   = "ctr-aes-neonbs",
        .base.cra_priority      = 250,
        .base.cra_blocksize     = 1,
        .base.cra_ctxsize       = sizeof(struct aesbs_ctx),
        .base.cra_module        = THIS_MODULE,
-       .base.cra_flags         = CRYPTO_ALG_INTERNAL,
 
        .min_keysize            = AES_MIN_KEY_SIZE,
        .max_keysize            = AES_MAX_KEY_SIZE,
@@ -473,29 +426,12 @@ static struct skcipher_alg aes_algs[] = { {
        .encrypt                = ctr_encrypt,
        .decrypt                = ctr_encrypt,
 }, {
-       .base.cra_name          = "ctr(aes)",
-       .base.cra_driver_name   = "ctr-aes-neonbs-sync",
-       .base.cra_priority      = 250 - 1,
-       .base.cra_blocksize     = 1,
-       .base.cra_ctxsize       = sizeof(struct aesbs_ctr_ctx),
-       .base.cra_module        = THIS_MODULE,
-
-       .min_keysize            = AES_MIN_KEY_SIZE,
-       .max_keysize            = AES_MAX_KEY_SIZE,
-       .chunksize              = AES_BLOCK_SIZE,
-       .walksize               = 8 * AES_BLOCK_SIZE,
-       .ivsize                 = AES_BLOCK_SIZE,
-       .setkey                 = aesbs_ctr_setkey_sync,
-       .encrypt                = ctr_encrypt_sync,
-       .decrypt                = ctr_encrypt_sync,
-}, {
-       .base.cra_name          = "__xts(aes)",
-       .base.cra_driver_name   = "__xts-aes-neonbs",
+       .base.cra_name          = "xts(aes)",
+       .base.cra_driver_name   = "xts-aes-neonbs",
        .base.cra_priority      = 250,
        .base.cra_blocksize     = AES_BLOCK_SIZE,
        .base.cra_ctxsize       = sizeof(struct aesbs_xts_ctx),
        .base.cra_module        = THIS_MODULE,
-       .base.cra_flags         = CRYPTO_ALG_INTERNAL,
 
        .min_keysize            = 2 * AES_MIN_KEY_SIZE,
        .max_keysize            = 2 * AES_MAX_KEY_SIZE,
@@ -508,54 +444,17 @@ static struct skcipher_alg aes_algs[] = { {
        .exit                   = xts_exit,
 } };
 
-static struct simd_skcipher_alg *aes_simd_algs[ARRAY_SIZE(aes_algs)];
-
 static void aes_exit(void)
 {
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(aes_simd_algs); i++)
-               if (aes_simd_algs[i])
-                       simd_skcipher_free(aes_simd_algs[i]);
-
        crypto_unregister_skciphers(aes_algs, ARRAY_SIZE(aes_algs));
 }
 
 static int __init aes_init(void)
 {
-       struct simd_skcipher_alg *simd;
-       const char *basename;
-       const char *algname;
-       const char *drvname;
-       int err;
-       int i;
-
        if (!(elf_hwcap & HWCAP_NEON))
                return -ENODEV;
 
-       err = crypto_register_skciphers(aes_algs, ARRAY_SIZE(aes_algs));
-       if (err)
-               return err;
-
-       for (i = 0; i < ARRAY_SIZE(aes_algs); i++) {
-               if (!(aes_algs[i].base.cra_flags & CRYPTO_ALG_INTERNAL))
-                       continue;
-
-               algname = aes_algs[i].base.cra_name + 2;
-               drvname = aes_algs[i].base.cra_driver_name + 2;
-               basename = aes_algs[i].base.cra_driver_name;
-               simd = simd_skcipher_create_compat(algname, drvname, basename);
-               err = PTR_ERR(simd);
-               if (IS_ERR(simd))
-                       goto unregister_simds;
-
-               aes_simd_algs[i] = simd;
-       }
-       return 0;
-
-unregister_simds:
-       aes_exit();
-       return err;
+       return crypto_register_skciphers(aes_algs, ARRAY_SIZE(aes_algs));
 }
 
 late_initcall(aes_init);
-- 
2.17.1

Reply via email to