aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Siewior <sebastian@breakpoint.cc>2007-10-07 23:45:10 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:55:50 -0400
commitad5d27899fdbe7a66e57fdf1af883dbd7ff88dac (patch)
tree666a5809fd9a01e0798411b94962903c3431400c
parentf8246af005d56b73f4f04304fc5b6fd9878af4ef (diff)
[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>
-rw-r--r--arch/s390/crypto/sha1_s390.c2
-rw-r--r--arch/s390/crypto/sha256_s390.c2
-rw-r--r--crypto/Makefile4
-rw-r--r--crypto/sha1_generic.c (renamed from crypto/sha1.c)2
-rw-r--r--crypto/sha256_generic.c (renamed from crypto/sha256.c)2
-rw-r--r--drivers/crypto/padlock-sha.c17
6 files changed, 8 insertions, 21 deletions
diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c
index af4460ec381f..8ebd3cd6bd1f 100644
--- a/arch/s390/crypto/sha1_s390.c
+++ b/arch/s390/crypto/sha1_s390.c
@@ -12,7 +12,7 @@
12 * Author(s): Thomas Spatzier 12 * Author(s): Thomas Spatzier
13 * Jan Glauber (jan.glauber@de.ibm.com) 13 * Jan Glauber (jan.glauber@de.ibm.com)
14 * 14 *
15 * Derived from "crypto/sha1.c" 15 * Derived from "crypto/sha1_generic.c"
16 * Copyright (c) Alan Smithee. 16 * Copyright (c) Alan Smithee.
17 * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk> 17 * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
18 * Copyright (c) Jean-Francois Dive <jef@linuxbe.org> 18 * Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c
index 2ced3330bce0..c728bd0ae1ed 100644
--- a/arch/s390/crypto/sha256_s390.c
+++ b/arch/s390/crypto/sha256_s390.c
@@ -7,7 +7,7 @@
7 * Copyright IBM Corp. 2005,2007 7 * Copyright IBM Corp. 2005,2007
8 * Author(s): Jan Glauber (jang@de.ibm.com) 8 * Author(s): Jan Glauber (jang@de.ibm.com)
9 * 9 *
10 * Derived from "crypto/sha256.c" 10 * Derived from "crypto/sha256_generic.c"
11 * and "arch/s390/crypto/sha1_s390.c" 11 * and "arch/s390/crypto/sha1_s390.c"
12 * 12 *
13 * This program is free software; you can redistribute it and/or modify it 13 * This program is free software; you can redistribute it and/or modify it
diff --git a/crypto/Makefile b/crypto/Makefile
index b6ef5e4f1ab4..43c2a0dc9936 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -21,8 +21,8 @@ obj-$(CONFIG_CRYPTO_XCBC) += xcbc.o
21obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o 21obj-$(CONFIG_CRYPTO_NULL) += crypto_null.o
22obj-$(CONFIG_CRYPTO_MD4) += md4.o 22obj-$(CONFIG_CRYPTO_MD4) += md4.o
23obj-$(CONFIG_CRYPTO_MD5) += md5.o 23obj-$(CONFIG_CRYPTO_MD5) += md5.o
24obj-$(CONFIG_CRYPTO_SHA1) += sha1.o 24obj-$(CONFIG_CRYPTO_SHA1) += sha1_generic.o
25obj-$(CONFIG_CRYPTO_SHA256) += sha256.o 25obj-$(CONFIG_CRYPTO_SHA256) += sha256_generic.o
26obj-$(CONFIG_CRYPTO_SHA512) += sha512.o 26obj-$(CONFIG_CRYPTO_SHA512) += sha512.o
27obj-$(CONFIG_CRYPTO_WP512) += wp512.o 27obj-$(CONFIG_CRYPTO_WP512) += wp512.o
28obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o 28obj-$(CONFIG_CRYPTO_TGR192) += tgr192.o
diff --git a/crypto/sha1.c b/crypto/sha1_generic.c
index 1bba551e5b45..70364dd5c45a 100644
--- a/crypto/sha1.c
+++ b/crypto/sha1_generic.c
@@ -139,4 +139,4 @@ module_exit(fini);
139MODULE_LICENSE("GPL"); 139MODULE_LICENSE("GPL");
140MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm"); 140MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
141 141
142MODULE_ALIAS("sha1-generic"); 142MODULE_ALIAS("sha1");
diff --git a/crypto/sha256.c b/crypto/sha256_generic.c
index 716195bb54f2..74bf2f95f4e5 100644
--- a/crypto/sha256.c
+++ b/crypto/sha256_generic.c
@@ -339,4 +339,4 @@ module_exit(fini);
339MODULE_LICENSE("GPL"); 339MODULE_LICENSE("GPL");
340MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm"); 340MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm");
341 341
342MODULE_ALIAS("sha256-generic"); 342MODULE_ALIAS("sha256");
diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
index a781fd23b607..f3857bbbfae3 100644
--- a/drivers/crypto/padlock-sha.c
+++ b/drivers/crypto/padlock-sha.c
@@ -253,19 +253,6 @@ static struct crypto_alg sha256_alg = {
253 } 253 }
254}; 254};
255 255
256static void __init padlock_sha_check_fallbacks(void)
257{
258 if (!crypto_has_hash("sha1", 0, CRYPTO_ALG_ASYNC |
259 CRYPTO_ALG_NEED_FALLBACK))
260 printk(KERN_WARNING PFX
261 "Couldn't load fallback module for sha1.\n");
262
263 if (!crypto_has_hash("sha256", 0, CRYPTO_ALG_ASYNC |
264 CRYPTO_ALG_NEED_FALLBACK))
265 printk(KERN_WARNING PFX
266 "Couldn't load fallback module for sha256.\n");
267}
268
269static int __init padlock_init(void) 256static int __init padlock_init(void)
270{ 257{
271 int rc = -ENODEV; 258 int rc = -ENODEV;
@@ -280,8 +267,6 @@ static int __init padlock_init(void)
280 return -ENODEV; 267 return -ENODEV;
281 } 268 }
282 269
283 padlock_sha_check_fallbacks();
284
285 rc = crypto_register_alg(&sha1_alg); 270 rc = crypto_register_alg(&sha1_alg);
286 if (rc) 271 if (rc)
287 goto out; 272 goto out;
@@ -314,5 +299,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support.");
314MODULE_LICENSE("GPL"); 299MODULE_LICENSE("GPL");
315MODULE_AUTHOR("Michal Ludvig"); 300MODULE_AUTHOR("Michal Ludvig");
316 301
302MODULE_ALIAS("sha1");
303MODULE_ALIAS("sha256");
317MODULE_ALIAS("sha1-padlock"); 304MODULE_ALIAS("sha1-padlock");
318MODULE_ALIAS("sha256-padlock"); 305MODULE_ALIAS("sha256-padlock");