Apply Crypto API wrappers to the exported crypto symbol in CONFIG_CRYPTO_SERPENT_AVX_X86_64-related crypto to convert them into pluggable interface.
Signed-off-by: Jay Wang <[email protected]> --- arch/x86/crypto/Makefile | 2 +- arch/x86/crypto/fips140/fips140-api.c | 13 +++++++++++++ arch/x86/crypto/serpent-avx.h | 17 ++++++++++------- arch/x86/crypto/serpent_avx_glue.c | 4 ++-- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index 986ed1d64b51..8be124f5e05d 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile @@ -15,7 +15,7 @@ obj-$(CONFIG_CRYPTO_SERPENT_SSE2_586) += serpent-sse2-i586.o serpent-sse2-i586-y := serpent-sse2-i586-asm_32.o serpent_sse2_glue.o crypto-objs-$(CONFIG_CRYPTO_SERPENT_SSE2_X86_64) += serpent-sse2-x86_64.o serpent-sse2-x86_64-y := serpent-sse2-x86_64-asm_64.o serpent_sse2_glue.o -obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o +crypto-objs-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o serpent_avx_glue.o obj-$(CONFIG_CRYPTO_SERPENT_AVX2_X86_64) += serpent-avx2.o serpent-avx2-y := serpent-avx2-asm_64.o serpent_avx2_glue.o diff --git a/arch/x86/crypto/fips140/fips140-api.c b/arch/x86/crypto/fips140/fips140-api.c index a1a207fa34cd..15a60258d4ee 100644 --- a/arch/x86/crypto/fips140/fips140-api.c +++ b/arch/x86/crypto/fips140/fips140-api.c @@ -21,4 +21,17 @@ DEFINE_CRYPTO_API_STUB(__twofish_enc_blk_3way); DEFINE_CRYPTO_API_STUB(twofish_dec_blk_3way); DEFINE_CRYPTO_API_STUB(twofish_dec_blk_cbc_3way); +#endif + +/* + * arch/x86/crypto/serpent_avx_glue.c + */ +#if IS_BUILTIN(CONFIG_CRYPTO_SERPENT_AVX_X86_64) + +#include <arch/x86/crypto/serpent-avx.h> + +DEFINE_CRYPTO_API_STUB(serpent_ecb_enc_8way_avx); +DEFINE_CRYPTO_API_STUB(serpent_ecb_dec_8way_avx); +DEFINE_CRYPTO_API_STUB(serpent_cbc_dec_8way_avx); + #endif \ No newline at end of file diff --git a/arch/x86/crypto/serpent-avx.h b/arch/x86/crypto/serpent-avx.h index 23f3361a0e72..8e7f285273ca 100644 --- a/arch/x86/crypto/serpent-avx.h +++ b/arch/x86/crypto/serpent-avx.h @@ -2,6 +2,7 @@ #ifndef ASM_X86_SERPENT_AVX_H #define ASM_X86_SERPENT_AVX_H +#include <crypto/api.h> #include <crypto/b128ops.h> #include <crypto/serpent.h> #include <linux/types.h> @@ -10,12 +11,14 @@ struct crypto_skcipher; #define SERPENT_PARALLEL_BLOCKS 8 -asmlinkage void serpent_ecb_enc_8way_avx(const void *ctx, u8 *dst, - const u8 *src); -asmlinkage void serpent_ecb_dec_8way_avx(const void *ctx, u8 *dst, - const u8 *src); - -asmlinkage void serpent_cbc_dec_8way_avx(const void *ctx, u8 *dst, - const u8 *src); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_SERPENT_AVX_X86_64, serpent_ecb_enc_8way_avx, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_SERPENT_AVX_X86_64, serpent_ecb_dec_8way_avx, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_SERPENT_AVX_X86_64, serpent_cbc_dec_8way_avx, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); #endif diff --git a/arch/x86/crypto/serpent_avx_glue.c b/arch/x86/crypto/serpent_avx_glue.c index 9c8b3a335d5c..43c877a2fc7e 100644 --- a/arch/x86/crypto/serpent_avx_glue.c +++ b/arch/x86/crypto/serpent_avx_glue.c @@ -117,8 +117,8 @@ static void __exit serpent_exit(void) crypto_unregister_skciphers(serpent_algs, ARRAY_SIZE(serpent_algs)); } -module_init(serpent_init); -module_exit(serpent_exit); +crypto_module_init(serpent_init); +crypto_module_exit(serpent_exit); MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX optimized"); MODULE_LICENSE("GPL"); -- 2.47.3
