Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu: - Fix build error in crypto lib code when crypto API is off - Fix NULL/error check in hisilicon - Fix Kconfig-related build error in talitos * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: hisilicon - fix a NULL vs IS_ERR() bug in sec_create_qp_ctx() crypto: talitos - Fix build error by selecting LIB_DES crypto: arch - conditionalize crypto api in arch glue for lib code
This commit is contained in:
commit
483847a702
|
@ -286,11 +286,13 @@ static struct skcipher_alg neon_algs[] = {
|
||||||
|
|
||||||
static int __init chacha_simd_mod_init(void)
|
static int __init chacha_simd_mod_init(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err = 0;
|
||||||
|
|
||||||
err = crypto_register_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER)) {
|
||||||
if (err)
|
err = crypto_register_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
||||||
return err;
|
if (err)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && (elf_hwcap & HWCAP_NEON)) {
|
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && (elf_hwcap & HWCAP_NEON)) {
|
||||||
int i;
|
int i;
|
||||||
|
@ -310,18 +312,22 @@ static int __init chacha_simd_mod_init(void)
|
||||||
static_branch_enable(&use_neon);
|
static_branch_enable(&use_neon);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = crypto_register_skciphers(neon_algs, ARRAY_SIZE(neon_algs));
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER)) {
|
||||||
if (err)
|
err = crypto_register_skciphers(neon_algs, ARRAY_SIZE(neon_algs));
|
||||||
crypto_unregister_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
if (err)
|
||||||
|
crypto_unregister_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit chacha_simd_mod_fini(void)
|
static void __exit chacha_simd_mod_fini(void)
|
||||||
{
|
{
|
||||||
crypto_unregister_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER)) {
|
||||||
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && (elf_hwcap & HWCAP_NEON))
|
crypto_unregister_skciphers(arm_algs, ARRAY_SIZE(arm_algs));
|
||||||
crypto_unregister_skciphers(neon_algs, ARRAY_SIZE(neon_algs));
|
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && (elf_hwcap & HWCAP_NEON))
|
||||||
|
crypto_unregister_skciphers(neon_algs, ARRAY_SIZE(neon_algs));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(chacha_simd_mod_init);
|
module_init(chacha_simd_mod_init);
|
||||||
|
|
|
@ -108,14 +108,15 @@ static int __init mod_init(void)
|
||||||
{
|
{
|
||||||
if (elf_hwcap & HWCAP_NEON) {
|
if (elf_hwcap & HWCAP_NEON) {
|
||||||
static_branch_enable(&have_neon);
|
static_branch_enable(&have_neon);
|
||||||
return crypto_register_kpp(&curve25519_alg);
|
return IS_REACHABLE(CONFIG_CRYPTO_KPP) ?
|
||||||
|
crypto_register_kpp(&curve25519_alg) : 0;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit mod_exit(void)
|
static void __exit mod_exit(void)
|
||||||
{
|
{
|
||||||
if (elf_hwcap & HWCAP_NEON)
|
if (IS_REACHABLE(CONFIG_CRYPTO_KPP) && elf_hwcap & HWCAP_NEON)
|
||||||
crypto_unregister_kpp(&curve25519_alg);
|
crypto_unregister_kpp(&curve25519_alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -249,16 +249,19 @@ static int __init arm_poly1305_mod_init(void)
|
||||||
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) &&
|
if (IS_ENABLED(CONFIG_KERNEL_MODE_NEON) &&
|
||||||
(elf_hwcap & HWCAP_NEON))
|
(elf_hwcap & HWCAP_NEON))
|
||||||
static_branch_enable(&have_neon);
|
static_branch_enable(&have_neon);
|
||||||
else
|
else if (IS_REACHABLE(CONFIG_CRYPTO_HASH))
|
||||||
/* register only the first entry */
|
/* register only the first entry */
|
||||||
return crypto_register_shash(&arm_poly1305_algs[0]);
|
return crypto_register_shash(&arm_poly1305_algs[0]);
|
||||||
|
|
||||||
return crypto_register_shashes(arm_poly1305_algs,
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ?
|
||||||
ARRAY_SIZE(arm_poly1305_algs));
|
crypto_register_shashes(arm_poly1305_algs,
|
||||||
|
ARRAY_SIZE(arm_poly1305_algs)) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit arm_poly1305_mod_exit(void)
|
static void __exit arm_poly1305_mod_exit(void)
|
||||||
{
|
{
|
||||||
|
if (!IS_REACHABLE(CONFIG_CRYPTO_HASH))
|
||||||
|
return;
|
||||||
if (!static_branch_likely(&have_neon)) {
|
if (!static_branch_likely(&have_neon)) {
|
||||||
crypto_unregister_shash(&arm_poly1305_algs[0]);
|
crypto_unregister_shash(&arm_poly1305_algs[0]);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -211,12 +211,13 @@ static int __init chacha_simd_mod_init(void)
|
||||||
|
|
||||||
static_branch_enable(&have_neon);
|
static_branch_enable(&have_neon);
|
||||||
|
|
||||||
return crypto_register_skciphers(algs, ARRAY_SIZE(algs));
|
return IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER) ?
|
||||||
|
crypto_register_skciphers(algs, ARRAY_SIZE(algs)) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit chacha_simd_mod_fini(void)
|
static void __exit chacha_simd_mod_fini(void)
|
||||||
{
|
{
|
||||||
if (cpu_have_named_feature(ASIMD))
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER) && cpu_have_named_feature(ASIMD))
|
||||||
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -220,12 +220,13 @@ static int __init neon_poly1305_mod_init(void)
|
||||||
|
|
||||||
static_branch_enable(&have_neon);
|
static_branch_enable(&have_neon);
|
||||||
|
|
||||||
return crypto_register_shash(&neon_poly1305_alg);
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ?
|
||||||
|
crypto_register_shash(&neon_poly1305_alg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit neon_poly1305_mod_exit(void)
|
static void __exit neon_poly1305_mod_exit(void)
|
||||||
{
|
{
|
||||||
if (cpu_have_named_feature(ASIMD))
|
if (IS_REACHABLE(CONFIG_CRYPTO_HASH) && cpu_have_named_feature(ASIMD))
|
||||||
crypto_unregister_shash(&neon_poly1305_alg);
|
crypto_unregister_shash(&neon_poly1305_alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,12 +128,14 @@ static struct skcipher_alg algs[] = {
|
||||||
|
|
||||||
static int __init chacha_simd_mod_init(void)
|
static int __init chacha_simd_mod_init(void)
|
||||||
{
|
{
|
||||||
return crypto_register_skciphers(algs, ARRAY_SIZE(algs));
|
return IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER) ?
|
||||||
|
crypto_register_skciphers(algs, ARRAY_SIZE(algs)) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit chacha_simd_mod_fini(void)
|
static void __exit chacha_simd_mod_fini(void)
|
||||||
{
|
{
|
||||||
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER))
|
||||||
|
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(chacha_simd_mod_init);
|
module_init(chacha_simd_mod_init);
|
||||||
|
|
|
@ -187,12 +187,14 @@ static struct shash_alg mips_poly1305_alg = {
|
||||||
|
|
||||||
static int __init mips_poly1305_mod_init(void)
|
static int __init mips_poly1305_mod_init(void)
|
||||||
{
|
{
|
||||||
return crypto_register_shash(&mips_poly1305_alg);
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ?
|
||||||
|
crypto_register_shash(&mips_poly1305_alg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit mips_poly1305_mod_exit(void)
|
static void __exit mips_poly1305_mod_exit(void)
|
||||||
{
|
{
|
||||||
crypto_unregister_shash(&mips_poly1305_alg);
|
if (IS_REACHABLE(CONFIG_CRYPTO_HASH))
|
||||||
|
crypto_unregister_shash(&mips_poly1305_alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(mips_poly1305_mod_init);
|
module_init(mips_poly1305_mod_init);
|
||||||
|
|
|
@ -210,12 +210,14 @@ static int __init blake2s_mod_init(void)
|
||||||
XFEATURE_MASK_AVX512, NULL))
|
XFEATURE_MASK_AVX512, NULL))
|
||||||
static_branch_enable(&blake2s_use_avx512);
|
static_branch_enable(&blake2s_use_avx512);
|
||||||
|
|
||||||
return crypto_register_shashes(blake2s_algs, ARRAY_SIZE(blake2s_algs));
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ?
|
||||||
|
crypto_register_shashes(blake2s_algs,
|
||||||
|
ARRAY_SIZE(blake2s_algs)) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit blake2s_mod_exit(void)
|
static void __exit blake2s_mod_exit(void)
|
||||||
{
|
{
|
||||||
if (boot_cpu_has(X86_FEATURE_SSSE3))
|
if (IS_REACHABLE(CONFIG_CRYPTO_HASH) && boot_cpu_has(X86_FEATURE_SSSE3))
|
||||||
crypto_unregister_shashes(blake2s_algs, ARRAY_SIZE(blake2s_algs));
|
crypto_unregister_shashes(blake2s_algs, ARRAY_SIZE(blake2s_algs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -299,12 +299,13 @@ static int __init chacha_simd_mod_init(void)
|
||||||
boot_cpu_has(X86_FEATURE_AVX512BW)) /* kmovq */
|
boot_cpu_has(X86_FEATURE_AVX512BW)) /* kmovq */
|
||||||
static_branch_enable(&chacha_use_avx512vl);
|
static_branch_enable(&chacha_use_avx512vl);
|
||||||
}
|
}
|
||||||
return crypto_register_skciphers(algs, ARRAY_SIZE(algs));
|
return IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER) ?
|
||||||
|
crypto_register_skciphers(algs, ARRAY_SIZE(algs)) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit chacha_simd_mod_fini(void)
|
static void __exit chacha_simd_mod_fini(void)
|
||||||
{
|
{
|
||||||
if (boot_cpu_has(X86_FEATURE_SSSE3))
|
if (IS_REACHABLE(CONFIG_CRYPTO_SKCIPHER) && boot_cpu_has(X86_FEATURE_SSSE3))
|
||||||
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2457,13 +2457,14 @@ static int __init curve25519_mod_init(void)
|
||||||
static_branch_enable(&curve25519_use_adx);
|
static_branch_enable(&curve25519_use_adx);
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
return crypto_register_kpp(&curve25519_alg);
|
return IS_REACHABLE(CONFIG_CRYPTO_KPP) ?
|
||||||
|
crypto_register_kpp(&curve25519_alg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit curve25519_mod_exit(void)
|
static void __exit curve25519_mod_exit(void)
|
||||||
{
|
{
|
||||||
if (boot_cpu_has(X86_FEATURE_BMI2) ||
|
if (IS_REACHABLE(CONFIG_CRYPTO_KPP) &&
|
||||||
boot_cpu_has(X86_FEATURE_ADX))
|
(boot_cpu_has(X86_FEATURE_BMI2) || boot_cpu_has(X86_FEATURE_ADX)))
|
||||||
crypto_unregister_kpp(&curve25519_alg);
|
crypto_unregister_kpp(&curve25519_alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,12 +224,13 @@ static int __init poly1305_simd_mod_init(void)
|
||||||
cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL))
|
cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL))
|
||||||
static_branch_enable(&poly1305_use_avx2);
|
static_branch_enable(&poly1305_use_avx2);
|
||||||
|
|
||||||
return crypto_register_shash(&alg);
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ? crypto_register_shash(&alg) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit poly1305_simd_mod_exit(void)
|
static void __exit poly1305_simd_mod_exit(void)
|
||||||
{
|
{
|
||||||
crypto_unregister_shash(&alg);
|
if (IS_REACHABLE(CONFIG_CRYPTO_HASH))
|
||||||
|
crypto_unregister_shash(&alg);
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(poly1305_simd_mod_init);
|
module_init(poly1305_simd_mod_init);
|
||||||
|
|
|
@ -289,6 +289,7 @@ config CRYPTO_DEV_TALITOS
|
||||||
select CRYPTO_AUTHENC
|
select CRYPTO_AUTHENC
|
||||||
select CRYPTO_SKCIPHER
|
select CRYPTO_SKCIPHER
|
||||||
select CRYPTO_HASH
|
select CRYPTO_HASH
|
||||||
|
select CRYPTO_LIB_DES
|
||||||
select HW_RANDOM
|
select HW_RANDOM
|
||||||
depends on FSL_SOC
|
depends on FSL_SOC
|
||||||
help
|
help
|
||||||
|
|
|
@ -179,14 +179,14 @@ static int sec_create_qp_ctx(struct hisi_qm *qm, struct sec_ctx *ctx,
|
||||||
|
|
||||||
qp_ctx->c_in_pool = hisi_acc_create_sgl_pool(dev, QM_Q_DEPTH,
|
qp_ctx->c_in_pool = hisi_acc_create_sgl_pool(dev, QM_Q_DEPTH,
|
||||||
SEC_SGL_SGE_NR);
|
SEC_SGL_SGE_NR);
|
||||||
if (!qp_ctx->c_in_pool) {
|
if (IS_ERR(qp_ctx->c_in_pool)) {
|
||||||
dev_err(dev, "fail to create sgl pool for input!\n");
|
dev_err(dev, "fail to create sgl pool for input!\n");
|
||||||
goto err_free_req_list;
|
goto err_free_req_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
qp_ctx->c_out_pool = hisi_acc_create_sgl_pool(dev, QM_Q_DEPTH,
|
qp_ctx->c_out_pool = hisi_acc_create_sgl_pool(dev, QM_Q_DEPTH,
|
||||||
SEC_SGL_SGE_NR);
|
SEC_SGL_SGE_NR);
|
||||||
if (!qp_ctx->c_out_pool) {
|
if (IS_ERR(qp_ctx->c_out_pool)) {
|
||||||
dev_err(dev, "fail to create sgl pool for output!\n");
|
dev_err(dev, "fail to create sgl pool for output!\n");
|
||||||
goto err_free_c_in_pool;
|
goto err_free_c_in_pool;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue