Skip to content

Commit

Permalink
[CRYPTO] sha: Load the SHA[1|256] module by an alias
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
sebastianas authored and David S. Miller committed Oct 10, 2007
1 parent f8246af commit ad5d278
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 21 deletions.
2 changes: 1 addition & 1 deletion arch/s390/crypto/sha1_s390.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* Author(s): Thomas Spatzier
* Jan Glauber ([email protected])
*
* Derived from "crypto/sha1.c"
* Derived from "crypto/sha1_generic.c"
* Copyright (c) Alan Smithee.
* Copyright (c) Andrew McDonald <[email protected]>
* Copyright (c) Jean-Francois Dive <[email protected]>
Expand Down
2 changes: 1 addition & 1 deletion arch/s390/crypto/sha256_s390.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* Copyright IBM Corp. 2005,2007
* Author(s): Jan Glauber ([email protected])
*
* Derived from "crypto/sha256.c"
* Derived from "crypto/sha256_generic.c"
* and "arch/s390/crypto/sha1_s390.c"
*
* This program is free software; you can redistribute it and/or modify it
Expand Down
4 changes: 2 additions & 2 deletions crypto/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
obj-$(CONFIG_CRYPTO_MD4) += md4.o
obj-$(CONFIG_CRYPTO_MD5) += md5.o
obj-$(CONFIG_CRYPTO_SHA1) += sha1.o
obj-$(CONFIG_CRYPTO_SHA256) += sha256.o
obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o
obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o
obj-$(CONFIG_CRYPTO_SHA512) += sha512.o
obj-$(CONFIG_CRYPTO_WP512) += wp512.o
obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
Expand Down
2 changes: 1 addition & 1 deletion crypto/sha1.c → crypto/sha1_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,4 @@ module_exit(fini);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");

MODULE_ALIAS("sha1-generic");
MODULE_ALIAS("sha1");
2 changes: 1 addition & 1 deletion crypto/sha256.c → crypto/sha256_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,4 +339,4 @@ module_exit(fini);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm");

MODULE_ALIAS("sha256-generic");
MODULE_ALIAS("sha256");
17 changes: 2 additions & 15 deletions drivers/crypto/padlock-sha.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
int rc = -ENODEV;
Expand All @@ -280,8 +267,6 @@ static int __init padlock_init(void)
return -ENODEV;
}

padlock_sha_check_fallbacks();

rc = crypto_register_alg(&sha1_alg);
if (rc)
goto out;
Expand Down Expand Up @@ -314,5 +299,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support.");
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Michal Ludvig");

MODULE_ALIAS("sha1");
MODULE_ALIAS("sha256");
MODULE_ALIAS("sha1-padlock");
MODULE_ALIAS("sha256-padlock");

0 comments on commit ad5d278

Please sign in to comment.