Commit 6006d452 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

Pull crypto fixes from Herbert Xu:
 "This fixes the following issues:

   - Fix AVX detection to prevent use of non-existent AESNI.

   - Some SPARC ciphers did not set their IV size which may lead to
     memory corruption"

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: ahash - ensure statesize is non-zero
  crypto: camellia_aesni_avx - Fix CPU feature checks
  crypto: sparc - initialize blkcipher.ivsize
parents 75542253 8996eafd
...@@ -433,6 +433,7 @@ static struct crypto_alg algs[] = { { ...@@ -433,6 +433,7 @@ static struct crypto_alg algs[] = { {
.blkcipher = { .blkcipher = {
.min_keysize = AES_MIN_KEY_SIZE, .min_keysize = AES_MIN_KEY_SIZE,
.max_keysize = AES_MAX_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE,
.ivsize = AES_BLOCK_SIZE,
.setkey = aes_set_key, .setkey = aes_set_key,
.encrypt = cbc_encrypt, .encrypt = cbc_encrypt,
.decrypt = cbc_decrypt, .decrypt = cbc_decrypt,
...@@ -452,6 +453,7 @@ static struct crypto_alg algs[] = { { ...@@ -452,6 +453,7 @@ static struct crypto_alg algs[] = { {
.blkcipher = { .blkcipher = {
.min_keysize = AES_MIN_KEY_SIZE, .min_keysize = AES_MIN_KEY_SIZE,
.max_keysize = AES_MAX_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE,
.ivsize = AES_BLOCK_SIZE,
.setkey = aes_set_key, .setkey = aes_set_key,
.encrypt = ctr_crypt, .encrypt = ctr_crypt,
.decrypt = ctr_crypt, .decrypt = ctr_crypt,
......
...@@ -274,6 +274,7 @@ static struct crypto_alg algs[] = { { ...@@ -274,6 +274,7 @@ static struct crypto_alg algs[] = { {
.blkcipher = { .blkcipher = {
.min_keysize = CAMELLIA_MIN_KEY_SIZE, .min_keysize = CAMELLIA_MIN_KEY_SIZE,
.max_keysize = CAMELLIA_MAX_KEY_SIZE, .max_keysize = CAMELLIA_MAX_KEY_SIZE,
.ivsize = CAMELLIA_BLOCK_SIZE,
.setkey = camellia_set_key, .setkey = camellia_set_key,
.encrypt = cbc_encrypt, .encrypt = cbc_encrypt,
.decrypt = cbc_decrypt, .decrypt = cbc_decrypt,
......
...@@ -429,6 +429,7 @@ static struct crypto_alg algs[] = { { ...@@ -429,6 +429,7 @@ static struct crypto_alg algs[] = { {
.blkcipher = { .blkcipher = {
.min_keysize = DES_KEY_SIZE, .min_keysize = DES_KEY_SIZE,
.max_keysize = DES_KEY_SIZE, .max_keysize = DES_KEY_SIZE,
.ivsize = DES_BLOCK_SIZE,
.setkey = des_set_key, .setkey = des_set_key,
.encrypt = cbc_encrypt, .encrypt = cbc_encrypt,
.decrypt = cbc_decrypt, .decrypt = cbc_decrypt,
...@@ -485,6 +486,7 @@ static struct crypto_alg algs[] = { { ...@@ -485,6 +486,7 @@ static struct crypto_alg algs[] = { {
.blkcipher = { .blkcipher = {
.min_keysize = DES3_EDE_KEY_SIZE, .min_keysize = DES3_EDE_KEY_SIZE,
.max_keysize = DES3_EDE_KEY_SIZE, .max_keysize = DES3_EDE_KEY_SIZE,
.ivsize = DES3_EDE_BLOCK_SIZE,
.setkey = des3_ede_set_key, .setkey = des3_ede_set_key,
.encrypt = cbc3_encrypt, .encrypt = cbc3_encrypt,
.decrypt = cbc3_decrypt, .decrypt = cbc3_decrypt,
......
...@@ -554,6 +554,11 @@ static int __init camellia_aesni_init(void) ...@@ -554,6 +554,11 @@ static int __init camellia_aesni_init(void)
{ {
const char *feature_name; const char *feature_name;
if (!cpu_has_avx || !cpu_has_aes || !cpu_has_osxsave) {
pr_info("AVX or AES-NI instructions are not detected.\n");
return -ENODEV;
}
if (!cpu_has_xfeatures(XSTATE_SSE | XSTATE_YMM, &feature_name)) { if (!cpu_has_xfeatures(XSTATE_SSE | XSTATE_YMM, &feature_name)) {
pr_info("CPU feature '%s' is not supported.\n", feature_name); pr_info("CPU feature '%s' is not supported.\n", feature_name);
return -ENODEV; return -ENODEV;
......
...@@ -544,7 +544,8 @@ static int ahash_prepare_alg(struct ahash_alg *alg) ...@@ -544,7 +544,8 @@ static int ahash_prepare_alg(struct ahash_alg *alg)
struct crypto_alg *base = &alg->halg.base; struct crypto_alg *base = &alg->halg.base;
if (alg->halg.digestsize > PAGE_SIZE / 8 || if (alg->halg.digestsize > PAGE_SIZE / 8 ||
alg->halg.statesize > PAGE_SIZE / 8) alg->halg.statesize > PAGE_SIZE / 8 ||
alg->halg.statesize == 0)
return -EINVAL; return -EINVAL;
base->cra_type = &crypto_ahash_type; base->cra_type = &crypto_ahash_type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment