diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-17 18:48:05 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-05-17 18:48:05 -0400 |
| commit | cd208bcc7cb0acd851e25c951ec2a9c14b084eab (patch) | |
| tree | 1abe6430d4944a034ad677db58817a3e4aa9bac5 | |
| parent | 86460103c412f9e11aeb7950cce64b9e51539d4d (diff) | |
| parent | acd246b7494c629aa617da49716409566cf52149 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
crypto: padlock - Revert aes-all alias to aes
crypto: api - Fix algorithm module auto-loading
crypto: eseqiv - Fix IV generation for sync algorithms
crypto: ixp4xx - check firmware for crypto support
| -rw-r--r-- | crypto/api.c | 3 | ||||
| -rw-r--r-- | crypto/eseqiv.c | 3 | ||||
| -rw-r--r-- | drivers/crypto/ixp4xx_crypto.c | 33 | ||||
| -rw-r--r-- | drivers/crypto/padlock-aes.c | 2 |
4 files changed, 37 insertions, 4 deletions
diff --git a/crypto/api.c b/crypto/api.c index 314dab96840e..fd2545decb28 100644 --- a/crypto/api.c +++ b/crypto/api.c | |||
| @@ -221,7 +221,8 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask) | |||
| 221 | 221 | ||
| 222 | request_module(name); | 222 | request_module(name); |
| 223 | 223 | ||
| 224 | if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask) && | 224 | if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask & |
| 225 | CRYPTO_ALG_NEED_FALLBACK) && | ||
| 225 | snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp)) | 226 | snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp)) |
| 226 | request_module(tmp); | 227 | request_module(tmp); |
| 227 | 228 | ||
diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c index 2a342c8e52b3..3ca3b669d5d5 100644 --- a/crypto/eseqiv.c +++ b/crypto/eseqiv.c | |||
| @@ -153,7 +153,8 @@ static int eseqiv_givencrypt(struct skcipher_givcrypt_request *req) | |||
| 153 | if (err) | 153 | if (err) |
| 154 | goto out; | 154 | goto out; |
| 155 | 155 | ||
| 156 | eseqiv_complete2(req); | 156 | if (giv != req->giv) |
| 157 | eseqiv_complete2(req); | ||
| 157 | 158 | ||
| 158 | out: | 159 | out: |
| 159 | return err; | 160 | return err; |
diff --git a/drivers/crypto/ixp4xx_crypto.c b/drivers/crypto/ixp4xx_crypto.c index f9f05d7a707d..6c6656d3b1e2 100644 --- a/drivers/crypto/ixp4xx_crypto.c +++ b/drivers/crypto/ixp4xx_crypto.c | |||
| @@ -415,6 +415,7 @@ static void crypto_done_action(unsigned long arg) | |||
| 415 | static int init_ixp_crypto(void) | 415 | static int init_ixp_crypto(void) |
| 416 | { | 416 | { |
| 417 | int ret = -ENODEV; | 417 | int ret = -ENODEV; |
| 418 | u32 msg[2] = { 0, 0 }; | ||
| 418 | 419 | ||
| 419 | if (! ( ~(*IXP4XX_EXP_CFG2) & (IXP4XX_FEATURE_HASH | | 420 | if (! ( ~(*IXP4XX_EXP_CFG2) & (IXP4XX_FEATURE_HASH | |
| 420 | IXP4XX_FEATURE_AES | IXP4XX_FEATURE_DES))) { | 421 | IXP4XX_FEATURE_AES | IXP4XX_FEATURE_DES))) { |
| @@ -426,9 +427,35 @@ static int init_ixp_crypto(void) | |||
| 426 | return ret; | 427 | return ret; |
| 427 | 428 | ||
| 428 | if (!npe_running(npe_c)) { | 429 | if (!npe_running(npe_c)) { |
| 429 | npe_load_firmware(npe_c, npe_name(npe_c), dev); | 430 | ret = npe_load_firmware(npe_c, npe_name(npe_c), dev); |
| 431 | if (ret) { | ||
| 432 | return ret; | ||
| 433 | } | ||
| 434 | if (npe_recv_message(npe_c, msg, "STATUS_MSG")) | ||
| 435 | goto npe_error; | ||
| 436 | } else { | ||
| 437 | if (npe_send_message(npe_c, msg, "STATUS_MSG")) | ||
| 438 | goto npe_error; | ||
| 439 | |||
| 440 | if (npe_recv_message(npe_c, msg, "STATUS_MSG")) | ||
| 441 | goto npe_error; | ||
| 430 | } | 442 | } |
| 431 | 443 | ||
| 444 | switch ((msg[1]>>16) & 0xff) { | ||
| 445 | case 3: | ||
| 446 | printk(KERN_WARNING "Firmware of %s lacks AES support\n", | ||
| 447 | npe_name(npe_c)); | ||
| 448 | support_aes = 0; | ||
| 449 | break; | ||
| 450 | case 4: | ||
| 451 | case 5: | ||
| 452 | support_aes = 1; | ||
| 453 | break; | ||
| 454 | default: | ||
| 455 | printk(KERN_ERR "Firmware of %s lacks crypto support\n", | ||
| 456 | npe_name(npe_c)); | ||
| 457 | return -ENODEV; | ||
| 458 | } | ||
| 432 | /* buffer_pool will also be used to sometimes store the hmac, | 459 | /* buffer_pool will also be used to sometimes store the hmac, |
| 433 | * so assure it is large enough | 460 | * so assure it is large enough |
| 434 | */ | 461 | */ |
| @@ -459,6 +486,10 @@ static int init_ixp_crypto(void) | |||
| 459 | 486 | ||
| 460 | qmgr_enable_irq(RECV_QID); | 487 | qmgr_enable_irq(RECV_QID); |
| 461 | return 0; | 488 | return 0; |
| 489 | |||
| 490 | npe_error: | ||
| 491 | printk(KERN_ERR "%s not responding\n", npe_name(npe_c)); | ||
| 492 | ret = -EIO; | ||
| 462 | err: | 493 | err: |
| 463 | if (ctx_pool) | 494 | if (ctx_pool) |
| 464 | dma_pool_destroy(ctx_pool); | 495 | dma_pool_destroy(ctx_pool); |
diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c index 3f0fdd18255d..856b3cc25583 100644 --- a/drivers/crypto/padlock-aes.c +++ b/drivers/crypto/padlock-aes.c | |||
| @@ -489,4 +489,4 @@ MODULE_DESCRIPTION("VIA PadLock AES algorithm support"); | |||
| 489 | MODULE_LICENSE("GPL"); | 489 | MODULE_LICENSE("GPL"); |
| 490 | MODULE_AUTHOR("Michal Ludvig"); | 490 | MODULE_AUTHOR("Michal Ludvig"); |
| 491 | 491 | ||
| 492 | MODULE_ALIAS("aes-all"); | 492 | MODULE_ALIAS("aes"); |
