[CRYPTO] sha: Load the SHA[1|256] module by an alias
Loading the crypto algorithm by the alias instead of by module directly has the advantage that all possible implementations of this algorithm are loaded automatically and the crypto API can choose the best one depending on its priority. Additionally it ensures that the generic implementation as well as the HW driver (if available) is loaded in case the HW driver needs the generic version as fallback in corner cases. Also remove the probe for sha1 in padlock's init code. Quote from Herbert: The probe is actually pointless since we can always probe when the algorithm is actually used which does not lead to dead-locks like this. Signed-off-by: Sebastian Siewior <sebastian@breakpoint.cc> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Родитель
f8246af005
Коммит
ad5d27899f
|
@ -12,7 +12,7 @@
|
||||||
* Author(s): Thomas Spatzier
|
* Author(s): Thomas Spatzier
|
||||||
* Jan Glauber (jan.glauber@de.ibm.com)
|
* Jan Glauber (jan.glauber@de.ibm.com)
|
||||||
*
|
*
|
||||||
* Derived from "crypto/sha1.c"
|
* Derived from "crypto/sha1_generic.c"
|
||||||
* Copyright (c) Alan Smithee.
|
* Copyright (c) Alan Smithee.
|
||||||
* Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
|
* Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
|
||||||
* Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
|
* Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* Copyright IBM Corp. 2005,2007
|
* Copyright IBM Corp. 2005,2007
|
||||||
* Author(s): Jan Glauber (jang@de.ibm.com)
|
* Author(s): Jan Glauber (jang@de.ibm.com)
|
||||||
*
|
*
|
||||||
* Derived from "crypto/sha256.c"
|
* Derived from "crypto/sha256_generic.c"
|
||||||
* and "arch/s390/crypto/sha1_s390.c"
|
* and "arch/s390/crypto/sha1_s390.c"
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
|
|
@ -21,8 +21,8 @@ obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
|
||||||
obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
|
obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
|
||||||
obj-$(CONFIG_CRYPTO_MD4) += md4.o
|
obj-$(CONFIG_CRYPTO_MD4) += md4.o
|
||||||
obj-$(CONFIG_CRYPTO_MD5) += md5.o
|
obj-$(CONFIG_CRYPTO_MD5) += md5.o
|
||||||
obj-$(CONFIG_CRYPTO_SHA1) += sha1.o
|
obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o
|
||||||
obj-$(CONFIG_CRYPTO_SHA256) += sha256.o
|
obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o
|
||||||
obj-$(CONFIG_CRYPTO_SHA512) += sha512.o
|
obj-$(CONFIG_CRYPTO_SHA512) += sha512.o
|
||||||
obj-$(CONFIG_CRYPTO_WP512) += wp512.o
|
obj-$(CONFIG_CRYPTO_WP512) += wp512.o
|
||||||
obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
|
obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
|
||||||
|
|
|
@ -139,4 +139,4 @@ module_exit(fini);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
|
MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
|
||||||
|
|
||||||
MODULE_ALIAS("sha1-generic");
|
MODULE_ALIAS("sha1");
|
|
@ -339,4 +339,4 @@ module_exit(fini);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm");
|
MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm");
|
||||||
|
|
||||||
MODULE_ALIAS("sha256-generic");
|
MODULE_ALIAS("sha256");
|
|
@ -253,19 +253,6 @@ static struct crypto_alg sha256_alg = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init padlock_sha_check_fallbacks(void)
|
|
||||||
{
|
|
||||||
if (!crypto_has_hash("sha1", 0, CRYPTO_ALG_ASYNC |
|
|
||||||
CRYPTO_ALG_NEED_FALLBACK))
|
|
||||||
printk(KERN_WARNING PFX
|
|
||||||
"Couldn't load fallback module for sha1.\n");
|
|
||||||
|
|
||||||
if (!crypto_has_hash("sha256", 0, CRYPTO_ALG_ASYNC |
|
|
||||||
CRYPTO_ALG_NEED_FALLBACK))
|
|
||||||
printk(KERN_WARNING PFX
|
|
||||||
"Couldn't load fallback module for sha256.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init padlock_init(void)
|
static int __init padlock_init(void)
|
||||||
{
|
{
|
||||||
int rc = -ENODEV;
|
int rc = -ENODEV;
|
||||||
|
@ -280,8 +267,6 @@ static int __init padlock_init(void)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
padlock_sha_check_fallbacks();
|
|
||||||
|
|
||||||
rc = crypto_register_alg(&sha1_alg);
|
rc = crypto_register_alg(&sha1_alg);
|
||||||
if (rc)
|
if (rc)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -314,5 +299,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support.");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("Michal Ludvig");
|
MODULE_AUTHOR("Michal Ludvig");
|
||||||
|
|
||||||
|
MODULE_ALIAS("sha1");
|
||||||
|
MODULE_ALIAS("sha256");
|
||||||
MODULE_ALIAS("sha1-padlock");
|
MODULE_ALIAS("sha1-padlock");
|
||||||
MODULE_ALIAS("sha256-padlock");
|
MODULE_ALIAS("sha256-padlock");
|
||||||
|
|
Загрузка…
Ссылка в новой задаче