crypto: run initcalls for generic implementations earlier
authorEric Biggers <ebiggers@google.com>
Fri, 12 Apr 2019 04:57:42 +0000 (21:57 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 18 Apr 2019 14:15:03 +0000 (22:15 +0800)
Use subsys_initcall for registration of all templates and generic
algorithm implementations, rather than module_init.  Then change
cryptomgr to use arch_initcall, to place it before the subsys_initcalls.

This is needed so that when both a generic and optimized implementation
of an algorithm are built into the kernel (not loadable modules), the
generic implementation is registered before the optimized one.
Otherwise, the self-tests for the optimized implementation are unable to
allocate the generic implementation for the new comparison fuzz tests.

Note that on arm, a side effect of this change is that self-tests for
generic implementations may run before the unaligned access handler has
been installed.  So, unaligned accesses will crash the kernel.  This is
arguably a good thing as it makes it easier to detect that type of bug.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
83 files changed:
crypto/842.c
crypto/adiantum.c
crypto/aegis128.c
crypto/aegis128l.c
crypto/aegis256.c
crypto/aes_generic.c
crypto/algboss.c
crypto/ansi_cprng.c
crypto/anubis.c
crypto/arc4.c
crypto/authenc.c
crypto/authencesn.c
crypto/blowfish_generic.c
crypto/camellia_generic.c
crypto/cast5_generic.c
crypto/cast6_generic.c
crypto/cbc.c
crypto/ccm.c
crypto/cfb.c
crypto/chacha20poly1305.c
crypto/chacha_generic.c
crypto/cmac.c
crypto/crc32_generic.c
crypto/crc32c_generic.c
crypto/crct10dif_generic.c
crypto/crypto_null.c
crypto/ctr.c
crypto/cts.c
crypto/deflate.c
crypto/des_generic.c
crypto/dh.c
crypto/drbg.c
crypto/ecb.c
crypto/ecdh.c
crypto/echainiv.c
crypto/fcrypt.c
crypto/fips.c
crypto/gcm.c
crypto/ghash-generic.c
crypto/hmac.c
crypto/jitterentropy-kcapi.c
crypto/keywrap.c
crypto/khazad.c
crypto/lrw.c
crypto/lz4.c
crypto/lz4hc.c
crypto/lzo-rle.c
crypto/lzo.c
crypto/md4.c
crypto/md5.c
crypto/michael_mic.c
crypto/morus1280.c
crypto/morus640.c
crypto/nhpoly1305.c
crypto/ofb.c
crypto/pcbc.c
crypto/pcrypt.c
crypto/poly1305_generic.c
crypto/rmd128.c
crypto/rmd160.c
crypto/rmd256.c
crypto/rmd320.c
crypto/rsa.c
crypto/salsa20_generic.c
crypto/seed.c
crypto/seqiv.c
crypto/serpent_generic.c
crypto/sha1_generic.c
crypto/sha256_generic.c
crypto/sha3_generic.c
crypto/sha512_generic.c
crypto/sm3_generic.c
crypto/sm4_generic.c
crypto/streebog_generic.c
crypto/tcrypt.c
crypto/tea.c
crypto/tgr192.c
crypto/twofish_generic.c
crypto/vmac.c
crypto/wp512.c
crypto/xcbc.c
crypto/xts.c
crypto/zstd.c

index bc26dc942821c518819dc47f24aba7b97ad989ae..5f98393b65d1e82a4c8d23fa2808fff98319aa99 100644 (file)
@@ -144,7 +144,7 @@ static int __init crypto842_mod_init(void)
 
        return ret;
 }
-module_init(crypto842_mod_init);
+subsys_initcall(crypto842_mod_init);
 
 static void __exit crypto842_mod_exit(void)
 {
index 5564e73266a6abb5ba91da29422ac86ba0ac153c..e6de50f669aa72bacc653d3b83a6002c879c48ac 100644 (file)
@@ -659,7 +659,7 @@ static void __exit adiantum_module_exit(void)
        crypto_unregister_template(&adiantum_tmpl);
 }
 
-module_init(adiantum_module_init);
+subsys_initcall(adiantum_module_init);
 module_exit(adiantum_module_exit);
 
 MODULE_DESCRIPTION("Adiantum length-preserving encryption mode");
index 3718a834130326e6ec729980b94fab658233a3de..d78f77fc5dd18f8474c537eddc727230c40268ce 100644 (file)
@@ -448,7 +448,7 @@ static void __exit crypto_aegis128_module_exit(void)
        crypto_unregister_aead(&crypto_aegis128_alg);
 }
 
-module_init(crypto_aegis128_module_init);
+subsys_initcall(crypto_aegis128_module_init);
 module_exit(crypto_aegis128_module_exit);
 
 MODULE_LICENSE("GPL");
index 275a8616d71bde31148779045f531a17ceb28046..9bca3d619a22b5be44940f7cf6343e6b495afeec 100644 (file)
@@ -512,7 +512,7 @@ static void __exit crypto_aegis128l_module_exit(void)
        crypto_unregister_aead(&crypto_aegis128l_alg);
 }
 
-module_init(crypto_aegis128l_module_init);
+subsys_initcall(crypto_aegis128l_module_init);
 module_exit(crypto_aegis128l_module_exit);
 
 MODULE_LICENSE("GPL");
index ecd6b7f34a2d235503af93bc08ef0a123ee932c1..b47fd39595ad71d55f7552db480fd50f49eb63fd 100644 (file)
@@ -463,7 +463,7 @@ static void __exit crypto_aegis256_module_exit(void)
        crypto_unregister_aead(&crypto_aegis256_alg);
 }
 
-module_init(crypto_aegis256_module_init);
+subsys_initcall(crypto_aegis256_module_init);
 module_exit(crypto_aegis256_module_exit);
 
 MODULE_LICENSE("GPL");
index fddcbe3edb0a6a6c9cf8c1b91e8fec83137ce1fd..f217568917e42d6a199bf7d0355c461095c6682b 100644 (file)
@@ -1470,7 +1470,7 @@ static void __exit aes_fini(void)
        crypto_unregister_alg(&aes_alg);
 }
 
-module_init(aes_init);
+subsys_initcall(aes_init);
 module_exit(aes_fini);
 
 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
index 527b44d0af21bce4e610f17f1b2d55bf507c1a41..bb97cfb388367f77e6168137c8462bf8a8887ff7 100644 (file)
@@ -296,7 +296,13 @@ static void __exit cryptomgr_exit(void)
        BUG_ON(err);
 }
 
-subsys_initcall(cryptomgr_init);
+/*
+ * This is arch_initcall() so that the crypto self-tests are run on algorithms
+ * registered early by subsys_initcall().  subsys_initcall() is needed for
+ * generic implementations so that they're available for comparison tests when
+ * other implementations are registered later by module_init().
+ */
+arch_initcall(cryptomgr_init);
 module_exit(cryptomgr_exit);
 
 MODULE_LICENSE("GPL");
index eff337ce9003701290d0ebaef5ade526a6bf0029..e7c43ea4ce9d1b863cff343e5c27eb8e9ff34a32 100644 (file)
@@ -472,7 +472,7 @@ MODULE_DESCRIPTION("Software Pseudo Random Number Generator");
 MODULE_AUTHOR("Neil Horman <nhorman@tuxdriver.com>");
 module_param(dbg, int, 0);
 MODULE_PARM_DESC(dbg, "Boolean to enable debugging (0/1 == off/on)");
-module_init(prng_mod_init);
+subsys_initcall(prng_mod_init);
 module_exit(prng_mod_fini);
 MODULE_ALIAS_CRYPTO("stdrng");
 MODULE_ALIAS_CRYPTO("ansi_cprng");
index 4bb187c2a9027bab28e82370bd54f128602a25f1..673927de0eb92977de0c13b2712292795e61756c 100644 (file)
@@ -699,7 +699,7 @@ static void __exit anubis_mod_fini(void)
        crypto_unregister_alg(&anubis_alg);
 }
 
-module_init(anubis_mod_init);
+subsys_initcall(anubis_mod_init);
 module_exit(anubis_mod_fini);
 
 MODULE_LICENSE("GPL");
index 6c93342e3405b60cc4e80e2f079c0c3f0c54c699..2233d36456e2715ff10dd4b7389d7db127574763 100644 (file)
@@ -163,7 +163,7 @@ static void __exit arc4_exit(void)
        crypto_unregister_skcipher(&arc4_skcipher);
 }
 
-module_init(arc4_init);
+subsys_initcall(arc4_init);
 module_exit(arc4_exit);
 
 MODULE_LICENSE("GPL");
index 4be293a4b5f0fe00bc88dbadefa1fbc5e984da1e..b3eddac7fa3a471880fa86b0b2587113b970bdae 100644 (file)
@@ -508,7 +508,7 @@ static void __exit crypto_authenc_module_exit(void)
        crypto_unregister_template(&crypto_authenc_tmpl);
 }
 
-module_init(crypto_authenc_module_init);
+subsys_initcall(crypto_authenc_module_init);
 module_exit(crypto_authenc_module_exit);
 
 MODULE_LICENSE("GPL");
index 4741fe89ba2cdee2b593c2ac4b44fc120e32f780..58074308e5350d8219d347b4e28229e8ce7ac096 100644 (file)
@@ -523,7 +523,7 @@ static void __exit crypto_authenc_esn_module_exit(void)
        crypto_unregister_template(&crypto_authenc_esn_tmpl);
 }
 
-module_init(crypto_authenc_esn_module_init);
+subsys_initcall(crypto_authenc_esn_module_init);
 module_exit(crypto_authenc_esn_module_exit);
 
 MODULE_LICENSE("GPL");
index 87b392a77a9395a9e4164b7e9356e739c9f96455..8548ced8b0741b739a46f3dcabcd2cb11458852b 100644 (file)
@@ -133,7 +133,7 @@ static void __exit blowfish_mod_fini(void)
        crypto_unregister_alg(&alg);
 }
 
-module_init(blowfish_mod_init);
+subsys_initcall(blowfish_mod_init);
 module_exit(blowfish_mod_fini);
 
 MODULE_LICENSE("GPL");
index 32ddd4836ff5549c953987c86beaff69f9109a98..15ce1281f5d9c5ba28a6c12c22ad462a290262b1 100644 (file)
@@ -1092,7 +1092,7 @@ static void __exit camellia_fini(void)
        crypto_unregister_alg(&camellia_alg);
 }
 
-module_init(camellia_init);
+subsys_initcall(camellia_init);
 module_exit(camellia_fini);
 
 MODULE_DESCRIPTION("Camellia Cipher Algorithm");
index 66169c17831484402c4e42eb391439d949675aaf..24bc7d4e33be0bfa0330e167e00532005f4720bb 100644 (file)
@@ -543,7 +543,7 @@ static void __exit cast5_mod_fini(void)
        crypto_unregister_alg(&alg);
 }
 
-module_init(cast5_mod_init);
+subsys_initcall(cast5_mod_init);
 module_exit(cast5_mod_fini);
 
 MODULE_LICENSE("GPL");
index c8e5ec69790e2a425995f82c1a6f0cf122d0e342..edd59cc349919bb9bdfdbc66c81f05a41b04b514 100644 (file)
@@ -285,7 +285,7 @@ static void __exit cast6_mod_fini(void)
        crypto_unregister_alg(&alg);
 }
 
-module_init(cast6_mod_init);
+subsys_initcall(cast6_mod_init);
 module_exit(cast6_mod_fini);
 
 MODULE_LICENSE("GPL");
index d12efaac9230b089baa5d137576f6ee1fb7488a4..129f79d0336585abbbc08754a8fb1946c3152de6 100644 (file)
@@ -98,7 +98,7 @@ static void __exit crypto_cbc_module_exit(void)
        crypto_unregister_template(&crypto_cbc_tmpl);
 }
 
-module_init(crypto_cbc_module_init);
+subsys_initcall(crypto_cbc_module_init);
 module_exit(crypto_cbc_module_exit);
 
 MODULE_LICENSE("GPL");
index 50df8f001c1c926eecb01cd2870d2e08489e16c2..3d036df0f4d4a1d9d5d2550e5063a932e52edb55 100644 (file)
@@ -1014,7 +1014,7 @@ static void __exit crypto_ccm_module_exit(void)
                                    ARRAY_SIZE(crypto_ccm_tmpls));
 }
 
-module_init(crypto_ccm_module_init);
+subsys_initcall(crypto_ccm_module_init);
 module_exit(crypto_ccm_module_exit);
 
 MODULE_LICENSE("GPL");
index 03ac847f6d6abb46259150d4f41830733901fd0f..7b68fbb617324907e3ce354f1a8974c58be9fa1d 100644 (file)
@@ -243,7 +243,7 @@ static void __exit crypto_cfb_module_exit(void)
        crypto_unregister_template(&crypto_cfb_tmpl);
 }
 
-module_init(crypto_cfb_module_init);
+subsys_initcall(crypto_cfb_module_init);
 module_exit(crypto_cfb_module_exit);
 
 MODULE_LICENSE("GPL");
index 279d816ab51dd2d2f25a1ad2e8a4444310ac214d..e38a2d61819a70d67d83e69f863b80efae269320 100644 (file)
@@ -725,7 +725,7 @@ static void __exit chacha20poly1305_module_exit(void)
                                    ARRAY_SIZE(rfc7539_tmpls));
 }
 
-module_init(chacha20poly1305_module_init);
+subsys_initcall(chacha20poly1305_module_init);
 module_exit(chacha20poly1305_module_exit);
 
 MODULE_LICENSE("GPL");
index a7fae9b73ec4e647dbf174327074eb05e13d3410..d2ec04997832e9ec7c21d85f1ee88b423727ee7c 100644 (file)
@@ -201,7 +201,7 @@ static void __exit chacha_generic_mod_fini(void)
        crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
 }
 
-module_init(chacha_generic_mod_init);
+subsys_initcall(chacha_generic_mod_init);
 module_exit(chacha_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index 16301f52858ca64995dc194b1e12791ed0d139a7..c60b6c011ec600595c4dee76b998d4528a64a7e9 100644 (file)
@@ -313,7 +313,7 @@ static void __exit crypto_cmac_module_exit(void)
        crypto_unregister_template(&crypto_cmac_tmpl);
 }
 
-module_init(crypto_cmac_module_init);
+subsys_initcall(crypto_cmac_module_init);
 module_exit(crypto_cmac_module_exit);
 
 MODULE_LICENSE("GPL");
index 00facd27bcc290549c7aa9277e02a37a39b507b3..9e97912280bdf30df037cff92afcb2be99ff66b8 100644 (file)
@@ -146,7 +146,7 @@ static void __exit crc32_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(crc32_mod_init);
+subsys_initcall(crc32_mod_init);
 module_exit(crc32_mod_fini);
 
 MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>");
index 7283066ecc982c193a1ac658b5f28ddc62473e13..ad26f15d4c7b3939d60ada57b6d5120e33f72f4f 100644 (file)
@@ -165,7 +165,7 @@ static void __exit crc32c_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(crc32c_mod_init);
+subsys_initcall(crc32c_mod_init);
 module_exit(crc32c_mod_fini);
 
 MODULE_AUTHOR("Clay Haapala <chaapala@cisco.com>");
index d08048ae555279da9fe5ef01659d1328854b7646..d90c0070710e8ce75e0ef245c6cd4a98b284adbc 100644 (file)
@@ -112,7 +112,7 @@ static void __exit crct10dif_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(crct10dif_mod_init);
+subsys_initcall(crct10dif_mod_init);
 module_exit(crct10dif_mod_fini);
 
 MODULE_AUTHOR("Tim Chen <tim.c.chen@linux.intel.com>");
index 01630a9c7e01154308407ffe65af799c5c2964c7..9320d4eaa4a8adbbb6ee2d5d05e46d54be18b279 100644 (file)
@@ -220,7 +220,7 @@ static void __exit crypto_null_mod_fini(void)
        crypto_unregister_skcipher(&skcipher_null);
 }
 
-module_init(crypto_null_mod_init);
+subsys_initcall(crypto_null_mod_init);
 module_exit(crypto_null_mod_fini);
 
 MODULE_LICENSE("GPL");
index ec8f8b67473a01d0bfe81e2f16290d90d1492a52..52cdf2c5605fb8e619137325863f0a2a3ab4e365 100644 (file)
@@ -384,7 +384,7 @@ static void __exit crypto_ctr_module_exit(void)
                                    ARRAY_SIZE(crypto_ctr_tmpls));
 }
 
-module_init(crypto_ctr_module_init);
+subsys_initcall(crypto_ctr_module_init);
 module_exit(crypto_ctr_module_exit);
 
 MODULE_LICENSE("GPL");
index 9441da797bb907744bc007c5217d68caa312b349..6b6087dbb62a21b53be48a2e3b6d1ae88b1c1a0c 100644 (file)
@@ -423,7 +423,7 @@ static void __exit crypto_cts_module_exit(void)
        crypto_unregister_template(&crypto_cts_tmpl);
 }
 
-module_init(crypto_cts_module_init);
+subsys_initcall(crypto_cts_module_init);
 module_exit(crypto_cts_module_exit);
 
 MODULE_LICENSE("Dual BSD/GPL");
index 94ec3b36a8e8396f9859bd7521fff2c5d2c6f44b..aab089cde1bf88fbed5857870f293cd7665d8628 100644 (file)
@@ -334,7 +334,7 @@ static void __exit deflate_mod_fini(void)
        crypto_unregister_scomps(scomp, ARRAY_SIZE(scomp));
 }
 
-module_init(deflate_mod_init);
+subsys_initcall(deflate_mod_init);
 module_exit(deflate_mod_fini);
 
 MODULE_LICENSE("GPL");
index ebec1fb08c456e138eb5f2a90bebf342c8cdae12..d7a88b4fa611c55651e08787c9dcde66f833cabc 100644 (file)
@@ -990,7 +990,7 @@ static void __exit des_generic_mod_fini(void)
        crypto_unregister_algs(des_algs, ARRAY_SIZE(des_algs));
 }
 
-module_init(des_generic_mod_init);
+subsys_initcall(des_generic_mod_init);
 module_exit(des_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index 09a44de4209d1632b9478917c45a03049c667cbb..ce77fb4ee8b32b8b3bd33e8220683270f6ebafaf 100644 (file)
@@ -236,7 +236,7 @@ static void dh_exit(void)
        crypto_unregister_kpp(&dh);
 }
 
-module_init(dh_init);
+subsys_initcall(dh_init);
 module_exit(dh_exit);
 MODULE_ALIAS_CRYPTO("dh");
 MODULE_LICENSE("GPL");
index bc52d956261102a5b6ae59e50ad56d21745abbcf..710b3046a4df2634888cd9408739e2a3940bf2b9 100644 (file)
@@ -2039,7 +2039,7 @@ static void __exit drbg_exit(void)
        crypto_unregister_rngs(drbg_algs, (ARRAY_SIZE(drbg_cores) * 2));
 }
 
-module_init(drbg_init);
+subsys_initcall(drbg_init);
 module_exit(drbg_exit);
 #ifndef CRYPTO_DRBG_HASH_STRING
 #define CRYPTO_DRBG_HASH_STRING ""
index 0732715c8d915514940d29ca5f92cf336079477b..de839129d151c0dcf20048cc13aea731281d9960 100644 (file)
@@ -101,7 +101,7 @@ static void __exit crypto_ecb_module_exit(void)
        crypto_unregister_template(&crypto_ecb_tmpl);
 }
 
-module_init(crypto_ecb_module_init);
+subsys_initcall(crypto_ecb_module_init);
 module_exit(crypto_ecb_module_exit);
 
 MODULE_LICENSE("GPL");
index bf6300175b9cd2416c81d7aab4c13b986e8bba60..890092bd8989912a58f145effcfe7d8881d82277 100644 (file)
@@ -166,7 +166,7 @@ static void ecdh_exit(void)
        crypto_unregister_kpp(&ecdh);
 }
 
-module_init(ecdh_init);
+subsys_initcall(ecdh_init);
 module_exit(ecdh_exit);
 MODULE_ALIAS_CRYPTO("ecdh");
 MODULE_LICENSE("GPL");
index 77e607fdbfb73e19ae6ae54ec6ad06df7e8e1c44..e71d1bc8d850d75168aea97b24523db5229a77de 100644 (file)
@@ -174,7 +174,7 @@ static void __exit echainiv_module_exit(void)
        crypto_unregister_template(&echainiv_tmpl);
 }
 
-module_init(echainiv_module_init);
+subsys_initcall(echainiv_module_init);
 module_exit(echainiv_module_exit);
 
 MODULE_LICENSE("GPL");
index 77286ea28865bf4ce5d97f4a556b8aeeed443b14..4e8704405a3b94d24c78bd60083124a61dddf80c 100644 (file)
@@ -414,7 +414,7 @@ static void __exit fcrypt_mod_fini(void)
        crypto_unregister_alg(&fcrypt_alg);
 }
 
-module_init(fcrypt_mod_init);
+subsys_initcall(fcrypt_mod_init);
 module_exit(fcrypt_mod_fini);
 
 MODULE_LICENSE("Dual BSD/GPL");
index 9d627c1cf8bc78a173248e82ce58135c1f306d44..9dfed122d6da9f606fd7f65224e9479d83630933 100644 (file)
@@ -74,5 +74,5 @@ static void __exit fips_exit(void)
        crypto_proc_fips_exit();
 }
 
-module_init(fips_init);
+subsys_initcall(fips_init);
 module_exit(fips_exit);
index e1a11f529d2576a213a9906c46a84478f6397856..ff498411b43f6ed500f323700ca1256a060ab1ff 100644 (file)
@@ -1258,7 +1258,7 @@ static void __exit crypto_gcm_module_exit(void)
                                    ARRAY_SIZE(crypto_gcm_tmpls));
 }
 
-module_init(crypto_gcm_module_init);
+subsys_initcall(crypto_gcm_module_init);
 module_exit(crypto_gcm_module_exit);
 
 MODULE_LICENSE("GPL");
index d9f192b953b22b06ea4adc6b921a1d59a1dde1f2..e6307935413c1657969bd93d0f6f67fd0d37651f 100644 (file)
@@ -149,7 +149,7 @@ static void __exit ghash_mod_exit(void)
        crypto_unregister_shash(&ghash_alg);
 }
 
-module_init(ghash_mod_init);
+subsys_initcall(ghash_mod_init);
 module_exit(ghash_mod_exit);
 
 MODULE_LICENSE("GPL");
index e74730224f0a5f6346bb8ae7b80f3ed5e6cb6281..4ceb3f1f0eb84dd04b0d489e9b6a057fb0e606e6 100644 (file)
@@ -268,7 +268,7 @@ static void __exit hmac_module_exit(void)
        crypto_unregister_template(&hmac_tmpl);
 }
 
-module_init(hmac_module_init);
+subsys_initcall(hmac_module_init);
 module_exit(hmac_module_exit);
 
 MODULE_LICENSE("GPL");
index 787dccca37159820054b4c71c78a6a5ec72e4e65..6ea1a270b8dc2e9890aa1f4a29bd0a45c2a481ae 100644 (file)
@@ -198,7 +198,7 @@ static void __exit jent_mod_exit(void)
        crypto_unregister_rng(&jent_alg);
 }
 
-module_init(jent_mod_init);
+subsys_initcall(jent_mod_init);
 module_exit(jent_mod_exit);
 
 MODULE_LICENSE("Dual BSD/GPL");
index a5cfe610d8f40a240f24add0553eeb9b7c99fe61..a155c88105ea1a91fb9d4f4fde2cf22ec8e1713f 100644 (file)
@@ -310,7 +310,7 @@ static void __exit crypto_kw_exit(void)
        crypto_unregister_template(&crypto_kw_tmpl);
 }
 
-module_init(crypto_kw_init);
+subsys_initcall(crypto_kw_init);
 module_exit(crypto_kw_exit);
 
 MODULE_LICENSE("Dual BSD/GPL");
index 873eb5ded6d7ae2f24e96221a131d5936d4101bd..b50aa8a3ab4cfcc47df70758635c6e66c8c4f1d6 100644 (file)
@@ -875,7 +875,7 @@ static void __exit khazad_mod_fini(void)
 }
 
 
-module_init(khazad_mod_init);
+subsys_initcall(khazad_mod_init);
 module_exit(khazad_mod_fini);
 
 MODULE_LICENSE("GPL");
index b6666c595a6866cfe06c3f443fa96995cb4a550f..0cc689ab69596cfa69f70ab886046e37ba12cc5b 100644 (file)
@@ -433,7 +433,7 @@ static void __exit crypto_module_exit(void)
        crypto_unregister_template(&crypto_tmpl);
 }
 
-module_init(crypto_module_init);
+subsys_initcall(crypto_module_init);
 module_exit(crypto_module_exit);
 
 MODULE_LICENSE("GPL");
index c160dfdbf2e0767691a4b2d157bffc3396e7b0fb..1e35134d0a98d9e58e06cdc86f5a75d56a65f186 100644 (file)
@@ -164,7 +164,7 @@ static void __exit lz4_mod_fini(void)
        crypto_unregister_scomp(&scomp);
 }
 
-module_init(lz4_mod_init);
+subsys_initcall(lz4_mod_init);
 module_exit(lz4_mod_fini);
 
 MODULE_LICENSE("GPL");
index 583b5e013d7a59f63b5fab2e4ccf7cabc7b77c3a..4a220b628fe7eec5cdd1b3f87a14ecc01f1ae79e 100644 (file)
@@ -165,7 +165,7 @@ static void __exit lz4hc_mod_fini(void)
        crypto_unregister_scomp(&scomp);
 }
 
-module_init(lz4hc_mod_init);
+subsys_initcall(lz4hc_mod_init);
 module_exit(lz4hc_mod_fini);
 
 MODULE_LICENSE("GPL");
index ea9c75b1db49bb488a64abc8b37c5935958409ea..4c82bf18440f0688bc5920e0908c85b8c6e04039 100644 (file)
@@ -167,7 +167,7 @@ static void __exit lzorle_mod_fini(void)
        crypto_unregister_scomp(&scomp);
 }
 
-module_init(lzorle_mod_init);
+subsys_initcall(lzorle_mod_init);
 module_exit(lzorle_mod_fini);
 
 MODULE_LICENSE("GPL");
index 218567d717d6831bff36743e5977ee73236cf0ce..4a6ac8f247d0a6688bcf37fb81c87440110db31c 100644 (file)
@@ -167,7 +167,7 @@ static void __exit lzo_mod_fini(void)
        crypto_unregister_scomp(&scomp);
 }
 
-module_init(lzo_mod_init);
+subsys_initcall(lzo_mod_init);
 module_exit(lzo_mod_fini);
 
 MODULE_LICENSE("GPL");
index 9965ec40d9f976dbca63a662477a7f9d83d4eed1..9a1a228a0c6955cd2f95ef6449bca396cdb60b0b 100644 (file)
@@ -232,7 +232,7 @@ static void __exit md4_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(md4_mod_init);
+subsys_initcall(md4_mod_init);
 module_exit(md4_mod_fini);
 
 MODULE_LICENSE("GPL");
index 94dd78144ba3e38b29341e2c229867a838a123bb..221c2c0932f83a4c8194fbae1685b259ce15ec11 100644 (file)
@@ -244,7 +244,7 @@ static void __exit md5_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(md5_mod_init);
+subsys_initcall(md5_mod_init);
 module_exit(md5_mod_fini);
 
 MODULE_LICENSE("GPL");
index 46195e0d0f4d1d30dd20b3bdc8f987ea14176643..538ae79337957416f73b90cf4b9c7282c7ac5343 100644 (file)
@@ -178,7 +178,7 @@ static void __exit michael_mic_exit(void)
 }
 
 
-module_init(michael_mic_init);
+subsys_initcall(michael_mic_init);
 module_exit(michael_mic_exit);
 
 MODULE_LICENSE("GPL v2");
index 0747732d5b78a6adb5b4f7bcafd3209ae4ebdbff..f8734c6576af6125a8f067fa89e1e9dc1ecd171b 100644 (file)
@@ -532,7 +532,7 @@ static void __exit crypto_morus1280_module_exit(void)
        crypto_unregister_aead(&crypto_morus1280_alg);
 }
 
-module_init(crypto_morus1280_module_init);
+subsys_initcall(crypto_morus1280_module_init);
 module_exit(crypto_morus1280_module_exit);
 
 MODULE_LICENSE("GPL");
index 1617a1eb8be13137007e043a38da34e9c6574105..ae5aa9482cb45860cae83c500b70c62194cd07fe 100644 (file)
@@ -523,7 +523,7 @@ static void __exit crypto_morus640_module_exit(void)
        crypto_unregister_aead(&crypto_morus640_alg);
 }
 
-module_init(crypto_morus640_module_init);
+subsys_initcall(crypto_morus640_module_init);
 module_exit(crypto_morus640_module_exit);
 
 MODULE_LICENSE("GPL");
index ec831a5594d8fe46266d00de594fbbf66ea058f6..9ab4e07cde4dca604f101273198f12c2b24a77f8 100644 (file)
@@ -244,7 +244,7 @@ static void __exit nhpoly1305_mod_exit(void)
        crypto_unregister_shash(&nhpoly1305_alg);
 }
 
-module_init(nhpoly1305_mod_init);
+subsys_initcall(nhpoly1305_mod_init);
 module_exit(nhpoly1305_mod_exit);
 
 MODULE_DESCRIPTION("NHPoly1305 ε-almost-∆-universal hash function");
index 34b6e1f426f7a9e6724e059fe0f835c02e956622..133ff4c7f2c6790fede04b26cf42d9a8bc9032c5 100644 (file)
@@ -95,7 +95,7 @@ static void __exit crypto_ofb_module_exit(void)
        crypto_unregister_template(&crypto_ofb_tmpl);
 }
 
-module_init(crypto_ofb_module_init);
+subsys_initcall(crypto_ofb_module_init);
 module_exit(crypto_ofb_module_exit);
 
 MODULE_LICENSE("GPL");
index 2fa03fc576fe4af88ba7062238749cf251630d50..31b3ce948474ee7bea8dd9899ac7fa61dc13675a 100644 (file)
@@ -191,7 +191,7 @@ static void __exit crypto_pcbc_module_exit(void)
        crypto_unregister_template(&crypto_pcbc_tmpl);
 }
 
-module_init(crypto_pcbc_module_init);
+subsys_initcall(crypto_pcbc_module_init);
 module_exit(crypto_pcbc_module_exit);
 
 MODULE_LICENSE("GPL");
index d47cfc47b1b1b359216deed02dcd0f96c8bba98b..0e9ce329fd47787427e18ba8d28c91553e69df89 100644 (file)
@@ -512,7 +512,7 @@ static void __exit pcrypt_exit(void)
        crypto_unregister_template(&pcrypt_tmpl);
 }
 
-module_init(pcrypt_init);
+subsys_initcall(pcrypt_init);
 module_exit(pcrypt_exit);
 
 MODULE_LICENSE("GPL");
index 2a06874204e87fd52f0f401cd2f408e7716442d7..adc40298c7492d9aae0f7638f233296c3eddfb2b 100644 (file)
@@ -318,7 +318,7 @@ static void __exit poly1305_mod_exit(void)
        crypto_unregister_shash(&poly1305_alg);
 }
 
-module_init(poly1305_mod_init);
+subsys_initcall(poly1305_mod_init);
 module_exit(poly1305_mod_exit);
 
 MODULE_LICENSE("GPL");
index 5f4472256e272f522ae32202779a732fa8ad791a..faf4252c4b85625597cb071a8e077a63dcc91088 100644 (file)
@@ -318,7 +318,7 @@ static void __exit rmd128_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(rmd128_mod_init);
+subsys_initcall(rmd128_mod_init);
 module_exit(rmd128_mod_fini);
 
 MODULE_LICENSE("GPL");
index 737645344d1cbe53b467d7b13590417f33f9f340..b33309916d4fe6ab7032b5ec699b97db51c35e0a 100644 (file)
@@ -362,7 +362,7 @@ static void __exit rmd160_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(rmd160_mod_init);
+subsys_initcall(rmd160_mod_init);
 module_exit(rmd160_mod_fini);
 
 MODULE_LICENSE("GPL");
index 0e9d30676a0136fe02b8e7ca8c01483a34e19d38..2a643250c9a5c0addd18fe83d1ffd5c0c6c8fcd3 100644 (file)
@@ -337,7 +337,7 @@ static void __exit rmd256_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(rmd256_mod_init);
+subsys_initcall(rmd256_mod_init);
 module_exit(rmd256_mod_fini);
 
 MODULE_LICENSE("GPL");
index 3ae1df5bb48c8205749846d91a2dce9844299fac..2f062574fc8c8d1f94b65a3d8bffefebe8825ad2 100644 (file)
@@ -386,7 +386,7 @@ static void __exit rmd320_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(rmd320_mod_init);
+subsys_initcall(rmd320_mod_init);
 module_exit(rmd320_mod_fini);
 
 MODULE_LICENSE("GPL");
index 5d427c1100d6d035e56da579860c173f0bb25386..dcbb03431778ce74d9c28e10ee45009b70186276 100644 (file)
@@ -282,7 +282,7 @@ static void rsa_exit(void)
        crypto_unregister_akcipher(&rsa);
 }
 
-module_init(rsa_init);
+subsys_initcall(rsa_init);
 module_exit(rsa_exit);
 MODULE_ALIAS_CRYPTO("rsa");
 MODULE_LICENSE("GPL");
index faed244be316f3d90884583385f894172306931c..c81a44404086a8722efdcfac496fa2e95a2a98ec 100644 (file)
@@ -203,7 +203,7 @@ static void __exit salsa20_generic_mod_fini(void)
        crypto_unregister_skcipher(&alg);
 }
 
-module_init(salsa20_generic_mod_init);
+subsys_initcall(salsa20_generic_mod_init);
 module_exit(salsa20_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index c6ba8438be430f59988e52a158d306dcb832c5fe..a75ac50fa4fd4923cb148d6426b23c9df67b3fde 100644 (file)
@@ -470,7 +470,7 @@ static void __exit seed_fini(void)
        crypto_unregister_alg(&seed_alg);
 }
 
-module_init(seed_init);
+subsys_initcall(seed_init);
 module_exit(seed_fini);
 
 MODULE_DESCRIPTION("SEED Cipher Algorithm");
index ed1b0e9f2436713392f45d3c1bedf2aabab7379c..3f2fad615d265e65c7b024b096002d243e7a0486 100644 (file)
@@ -211,7 +211,7 @@ static void __exit seqiv_module_exit(void)
        crypto_unregister_template(&seqiv_tmpl);
 }
 
-module_init(seqiv_module_init);
+subsys_initcall(seqiv_module_init);
 module_exit(seqiv_module_exit);
 
 MODULE_LICENSE("GPL");
index 7c3382facc82e8bb706a48029d90875cafb6a156..ec4ec89ad1085c7b60dde96aa93ec84ee6a39887 100644 (file)
@@ -664,7 +664,7 @@ static void __exit serpent_mod_fini(void)
        crypto_unregister_algs(srp_algs, ARRAY_SIZE(srp_algs));
 }
 
-module_init(serpent_mod_init);
+subsys_initcall(serpent_mod_init);
 module_exit(serpent_mod_fini);
 
 MODULE_LICENSE("GPL");
index 2af64ef81f402a4778a5c56a45b604f4d569fd3f..1b806d4584b2fbc7f559053ff6305609faa2e6dc 100644 (file)
@@ -92,7 +92,7 @@ static void __exit sha1_generic_mod_fini(void)
        crypto_unregister_shash(&alg);
 }
 
-module_init(sha1_generic_mod_init);
+subsys_initcall(sha1_generic_mod_init);
 module_exit(sha1_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index 1e5ba6649e8dbc47932d5c45c5d7706dbf62b498..5844e9a469e8a328c47911c206e43486d1b5a38a 100644 (file)
@@ -301,7 +301,7 @@ static void __exit sha256_generic_mod_fini(void)
        crypto_unregister_shashes(sha256_algs, ARRAY_SIZE(sha256_algs));
 }
 
-module_init(sha256_generic_mod_init);
+subsys_initcall(sha256_generic_mod_init);
 module_exit(sha256_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index 7ed98367d4fbb2924d067758452e119f7576840b..60fd2be609d8d173ddc1149fbe4da2fc0935919c 100644 (file)
@@ -294,7 +294,7 @@ static void __exit sha3_generic_mod_fini(void)
        crypto_unregister_shashes(algs, ARRAY_SIZE(algs));
 }
 
-module_init(sha3_generic_mod_init);
+subsys_initcall(sha3_generic_mod_init);
 module_exit(sha3_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index 4097cd555eb6becc50dfa83e7e6596eccc891498..0193ecb8ae1027d088bad0a60e905032c3b67686 100644 (file)
@@ -223,7 +223,7 @@ static void __exit sha512_generic_mod_fini(void)
        crypto_unregister_shashes(sha512_algs, ARRAY_SIZE(sha512_algs));
 }
 
-module_init(sha512_generic_mod_init);
+subsys_initcall(sha512_generic_mod_init);
 module_exit(sha512_generic_mod_fini);
 
 MODULE_LICENSE("GPL");
index c0cf87ae7ef6d0716e4e15f797603efaee96bb2b..e227bcada2a2000daa2a0ceb1800b0c7d2350863 100644 (file)
@@ -199,7 +199,7 @@ static void __exit sm3_generic_mod_fini(void)
        crypto_unregister_shash(&sm3_alg);
 }
 
-module_init(sm3_generic_mod_init);
+subsys_initcall(sm3_generic_mod_init);
 module_exit(sm3_generic_mod_fini);
 
 MODULE_LICENSE("GPL v2");
index c18eebfd5edda1651d1c08a8c1e9da71e6e866d9..71ffb343709a5985d0236238624c895c00ce7980 100644 (file)
@@ -237,7 +237,7 @@ static void __exit sm4_fini(void)
        crypto_unregister_alg(&sm4_alg);
 }
 
-module_init(sm4_init);
+subsys_initcall(sm4_init);
 module_exit(sm4_fini);
 
 MODULE_DESCRIPTION("SM4 Cipher Algorithm");
index b82fc3d79aa15da22fddb6b4d1d852c85208d528..63663c3bab7e9740650fffb69d87c24c3091c6a8 100644 (file)
@@ -1128,7 +1128,7 @@ static void __exit streebog_mod_fini(void)
        crypto_unregister_shashes(algs, ARRAY_SIZE(algs));
 }
 
-module_init(streebog_mod_init);
+subsys_initcall(streebog_mod_init);
 module_exit(streebog_mod_fini);
 
 MODULE_LICENSE("GPL");
index 1ea2d5007ff56167a4343e5d52b113220e831f73..798253f05203e2e982bb78df9d1111a961b3c59e 100644 (file)
@@ -3053,7 +3053,7 @@ err_free_tv:
  */
 static void __exit tcrypt_mod_fini(void) { }
 
-module_init(tcrypt_mod_init);
+subsys_initcall(tcrypt_mod_init);
 module_exit(tcrypt_mod_fini);
 
 module_param(alg, charp, 0);
index b70b441c7d1e7e6135f000fa8fa58a3057671b20..786b589e13995619507e9fbfd5ee3cafe2e2c160 100644 (file)
@@ -274,7 +274,7 @@ MODULE_ALIAS_CRYPTO("tea");
 MODULE_ALIAS_CRYPTO("xtea");
 MODULE_ALIAS_CRYPTO("xeta");
 
-module_init(tea_mod_init);
+subsys_initcall(tea_mod_init);
 module_exit(tea_mod_fini);
 
 MODULE_LICENSE("GPL");
index f8e1d9f9938f5f847f880a90ffa3f7a95023afcc..40020f8adc46a6208a92fc4283942ff08c15ef02 100644 (file)
@@ -677,7 +677,7 @@ MODULE_ALIAS_CRYPTO("tgr192");
 MODULE_ALIAS_CRYPTO("tgr160");
 MODULE_ALIAS_CRYPTO("tgr128");
 
-module_init(tgr192_mod_init);
+subsys_initcall(tgr192_mod_init);
 module_exit(tgr192_mod_fini);
 
 MODULE_LICENSE("GPL");
index 07e62433fbfb98c814dd7b8e8b87336b1ef9843f..dbac6e2332858b36f635d72f84b8a387eaf2c808 100644 (file)
@@ -205,7 +205,7 @@ static void __exit twofish_mod_fini(void)
        crypto_unregister_alg(&alg);
 }
 
-module_init(twofish_mod_init);
+subsys_initcall(twofish_mod_init);
 module_exit(twofish_mod_fini);
 
 MODULE_LICENSE("GPL");
index 5f436dfdfc61e90264802e41490a5901c75e2c3e..f50a85060b39f4359be9c05445bfd90735403a6f 100644 (file)
@@ -690,7 +690,7 @@ static void __exit vmac_module_exit(void)
        crypto_unregister_template(&vmac64_tmpl);
 }
 
-module_init(vmac_module_init);
+subsys_initcall(vmac_module_init);
 module_exit(vmac_module_exit);
 
 MODULE_LICENSE("GPL");
index 149e577fb7726afac56369488adaca6ca6118b1e..1b8e502d999fff329e742f6884b209d3ab9375ea 100644 (file)
@@ -1168,7 +1168,7 @@ MODULE_ALIAS_CRYPTO("wp512");
 MODULE_ALIAS_CRYPTO("wp384");
 MODULE_ALIAS_CRYPTO("wp256");
 
-module_init(wp512_mod_init);
+subsys_initcall(wp512_mod_init);
 module_exit(wp512_mod_fini);
 
 MODULE_LICENSE("GPL");
index c055f57fab11aa927069f7610b03f99eb0e09d55..94ca694ef091a7bc3ea60d3b7c2090526470bb17 100644 (file)
@@ -282,7 +282,7 @@ static void __exit crypto_xcbc_module_exit(void)
        crypto_unregister_template(&crypto_xcbc_tmpl);
 }
 
-module_init(crypto_xcbc_module_init);
+subsys_initcall(crypto_xcbc_module_init);
 module_exit(crypto_xcbc_module_exit);
 
 MODULE_LICENSE("GPL");
index 847f54f7678972dcc50c06b867ac2842a7535b4a..aed11e63ca315cdfc4fcf95292b944f3283e678e 100644 (file)
@@ -359,7 +359,7 @@ static void __exit crypto_module_exit(void)
        crypto_unregister_template(&crypto_tmpl);
 }
 
-module_init(crypto_module_init);
+subsys_initcall(crypto_module_init);
 module_exit(crypto_module_exit);
 
 MODULE_LICENSE("GPL");
index 9a76b3ed8b8bc3c37a1fa1da10ff05614e6774d5..2c04055e407f0648bd21f923bac6603c3e81ace4 100644 (file)
@@ -257,7 +257,7 @@ static void __exit zstd_mod_fini(void)
        crypto_unregister_scomp(&scomp);
 }
 
-module_init(zstd_mod_init);
+subsys_initcall(zstd_mod_init);
 module_exit(zstd_mod_fini);
 
 MODULE_LICENSE("GPL");